2010-11-26 18 views

Respuesta

18

Esto se ve como un list de tuple s, donde cada tuple tiene dos elementos.

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

que por supuesto puede simplificarse a:

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

O incluso:

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

Dónde l es el original list. Esto genera pares de "número @ número" para cada tupla en la lista. Estos pares se unen con espacios (' ').

La sintaxis join me pareció un poco extraña cuando empecé a trabajar con Python, pero the documentation fue de gran ayuda.

+0

en lugar de (' ') podría yo añadir \ n algún lugar por lo que la salida de RETUR ns como una columna con una cadena en cada nueva línea? – user457142

+0

¡Claro que puedes! ¿Por qué no probar 'print '\ n'.join ('% d @% d '% t para t en l)' en el intérprete de Python? – Johnsyweb

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

Esto es si los quieres en una colección de cadenas, no lo entendí si quieres una sola cadena de salida o una colección.

3

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

o tuplas arbitrarios en la lista,

' '.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

Se podría convertir las tuplas a las cadenas mediante el operador% con una lista por comprensión o generador expresión, por ejemplo

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

Esto devolverá una lista de cadenas como:

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

puede concatenar la lista resultante de cadenas juntas para la salida. This article describe media docena de enfoques diferentes con puntos de referencia y análisis de sus méritos relativos.

0

se puede utilizar la función de repr y luego simplemente reemplazar partes de la cadena:

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

pero esto sólo funcionará si se sabe con certeza que ninguno de tuplas tienen las siguientes secuencias de caracteres que necesitan que se conserva en el resultado final: ), (, [(, )], ,

Cuestiones relacionadas