2017-09-21 1 views
1

nouveau à la programmation python, a quelques difficultés à comprendre cela. J'essaie de convertir des tuples en chaînes, par exemple ('h', 'e', ​​4) en 'he4'. J'ai soumis une version en utilisant la fonction .join, et je suis tenu de trouver un autre ver. Je me donne les éléments suivants:Python de tuples à chaînes

def filter(pred, seq): # keeps elements that satisfy predicate 
    if seq ==(): 
     return() 
    elif pred(seq[0]): 
     return (seq[0],) + filter(pred, seq[1:]) 
    else: 
     return filter(pred, seq[1:]) 

def accumulate(fn, initial, seq): 
    if seq ==(): 
     return initial 
    else: 
     return fn(seq[0], accumulate(fn, initial, seq[1:])) 

conseils sur la façon d'utiliser les éléments suivants pour arriver à la conversion de chaînes à tuples?

+0

Copie possible de [convertir un tuple en chaîne Python] (https://stackoverflow.com/qu estions/19641579/python-convert-tuple-to-string) –

+0

@BrandonKheang Rien n'y utilise les deux fonctions ci-dessus. –

+0

"ce qui suit"? –

Répondre

1

Le donné filter est inutile pour cela, mais la donnée accumulate peut être utilisé facilement:

>>> t = ('h','e',4) 
>>> accumulate(lambda x, s: str(x) + s, '', t) 
'he4' 
+0

puis-je savoir ce que str (x) + s signifie? –

0

Parcourez simplement le tuple.

#tup stores your tuple 
string = '' 
for s in tuple : 
    string+=s 

Ici, vous parcourez le tuple et ajoutez chaque élément de celui-ci dans une nouvelle chaîne.

+2

Je pense que l'OP est nécessaire pour utiliser ces fonctions à la recherche, sinon vous avez raison, ce serait une solution très simple –

+0

Hmmm. Pourrait être. Pourquoi le compliquer quand vous pouvez le garder simple je le dis. Mais oui, si c'est l'exigence, va l'examiner. –

+1

Bien que @Davy M, la fonction fournie par l'OP semble étrange. Pouvez-vous distinguer à quoi cela ressemble? –

-1

Vous pouvez utiliser map to et join.

tup = ('h','e',4) 
map_str = map(str, tup) 
print(''.join(map_str)) 

La carte prend deux arguments. Le premier argument est la fonction qui doit être utilisée pour chaque élément de la liste. Le deuxième argument est l'itérable.

0

1) Utilisez la fonction reduce:

>>> t = ('h','e',4) 
>>> reduce(lambda x,y: str(x)+str(y), t, '') 
'he4' 

2) Utilisez récursion stupide:

>>> def str_by_recursion(t,s=''): 
     if not t: return '' 
     return str(t[0]) + str_by_recursion(t[1:]) 

>>> str_by_recursion(t) 
'he4'