2010-11-26 31 views

Répondre

18

Cela ressemble à un list de tuple s, où chaque tuple a deux éléments.

' '.join(['%[email protected]%d' % (t[0],t[1]) for t in l]) 

Ce qui peut bien sûr être simplifié à:

' '.join(['%[email protected]%d' % t for t in l]) 

Ou encore:

' '.join(map(lambda t: '%[email protected]%d' % t, l)) 

l est votre list d'origine. Cela génère des paires 'number @ number' pour chaque ligne de la liste. Ces paires sont ensuite jointes avec des espaces (' ').

La syntaxe join m'a semblé un peu bizarre quand j'ai commencé à me réveiller avec Python, mais the documentation a été d'une grande aide.

+0

au lieu de (» «) que je pourrais ajouter \ n quelque part pour le retur de sortie ns comme une colonne avec une chaîne sur chaque nouvelle ligne? – user457142

+0

Bien sûr, vous pouvez! Pourquoi ne pas essayer 'print' \ n'.join ('% d @% d'% t pour t dans l) 'dans l'interpréteur Python? – Johnsyweb

1
[ str(e[0]) + ',' + str(e[1]) for e in [(1,1), (2,2), (3,3)] ] 

C'est si vous les voulez dans une collection de chaîne, je ne l'ai pas compris si vous voulez une seule chaîne de sortie ou une collection.

3

' '.join([str(a)+"@"+str(b) for (a,b) in [(1,1),(2,2),(3,3)]])

ou pour tuples arbitraires dans la liste,

' '.join(['@'.join([str(v) for v in k]) for k in [(1,1),(2,2),(3,3)]])

0
[str(item).replace(',','@') for item in [(1,1),(2,2),(3,3)]] 
4

Vous pouvez convertir les tuples à cordes en utilisant l'opérateur% avec une compréhension de liste ou un générateur expression, par exemple

ll = [(1,1), (2,2), (3,3)] 
['%[email protected]%d' % aa for aa in ll] 

Ceci renvoie une liste de chaînes comme:

['[email protected]', '[email protected]', '[email protected]'] 

Vous pouvez concaténer la liste résultante des chaînes ainsi que pour la sortie. This article décrit une demi-douzaine d'approches différentes avec des repères et l'analyse de leurs mérites relatifs.

0

vous pouvez utiliser la fonction repr puis il suffit de remplacer les bits de la chaîne:

>>> original = [(1,1),(2,2),(3,3)] 
>>> intermediate = repr(original) 
>>> print intermediate 
[(1, 1), (2, 2), (3, 3)] 
>>> final = intermediate.replace('), (', ' ').replace('[(','').replace(')]','').replace(', ','@') 
>>> print final 
[email protected] [email protected] [email protected] 

mais cela ne fonctionnera que si vous savez avec certitude qu'aucun des tuples ont les séquences de caractères suivantes qui ont besoin à conserver dans le résultat final: ), (, [(, )], ,