2010-11-26 18 views

Antwort

18

Das sieht wie ein list von tuple s aus, wo jedes tuple zwei Elemente hat.

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

Was natürlich kann vereinfacht werden:

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

Oder auch:

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

Wo l Ihre ursprüngliche list ist. Dies erzeugt für jedes Tupel in der Liste "Anzahl @ Anzahl" -Paare. Diese Paare werden dann mit Leerzeichen verbunden (' ').

Die Syntax join sah etwas komisch aus, als ich anfing, mit Python zu woken, aber the documentation war eine große Hilfe.

+0

statt (‘‚) i hinzufügen \ n irgendwo so dass der Ausgang retur ns als eine Spalte mit einer Zeichenfolge in jeder neuen Zeile? – user457142

+0

Sicher kannst du! Warum probierst du 'print '\ n'.join ('% d @% d '% t für t in l)' im Python-Interpreter? – Johnsyweb

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

Dies ist, wenn Sie sie in einer Sammlung von Zeichenfolge möchten, habe ich es nicht verstanden, wenn Sie eine einzelne Ausgabezeichenfolge oder eine Sammlung möchten.

3

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

oder für beliebige Tupel in der 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

Sie die Tupel in Strings mit Hilfe des Operators% mit einer Liste Verständnis oder Generator umwandeln könnten Ausdruck, z

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

Dies würde eine Liste von Zeichenketten wie zurückgeben:

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

Sie können die resultierende Liste von Strings zusammen für die Ausgabe verketten. This article beschreibt ein halbes Dutzend verschiedener Ansätze mit Benchmarks und Analyse ihrer relativen Vorzüge.

0

könnten Sie die repr Funktion verwenden und dann nur Bits der Kette ersetzen:

>>> 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] 

aber dies funktioniert nur, wenn Sie sicher wissen, dass keiner von Tupeln die folgenden Zeichenfolgen haben, die brauchen werden im Endergebnis erhalten: ), (, [(, )] könnte ,

Verwandte Themen