Tengo la siguiente lista de tuplas.

a = [(5, 2), (2, 4)]

Y necesito mostrar el siguiente texto

(5,2) (2,4)

He intentado

[",".join(str(i) for i in j) for j in a]

Y proporciona la siguiente lista

['5,3', '2,4']

Pero no he encontrado una manera eficiente de obtener el resultado deseado, y debe funcionar para una lista de tuplas de diferentes tamaños.

6
A. Yu 10 may. 2019 a las 02:22

4 respuestas

La mejor respuesta

Puede usar el método str.join con una expresión generadora como la siguiente:

' '.join('(%s)' % ','.join(map(str, t)) for t in a)

Esto devuelve una cadena con el siguiente contenido:

(5,2) (2,4)
3
blhsing 9 may. 2019 a las 23:31

Solo intenta así.

El método join () funciona en un contenedor de cadenas, por lo que convertimos tuplas en cadenas para usar la función str () .

>>> text = " ".join(str(tup).replace(" ", '') for tup in a)
>>> text
'(5,2) (2,4)'
>>>
>>> print(text)
(5,2) (2,4)
>>>

En caso de que si quieres omma separado

>>> text = ",".join(str(tup).replace(" ", '') for tup in a)
>>> 
>>> text
'(5,2),(2,4)'
>>> 

Sugerencia: Finalmente, puede envolver el código dentro de una función get_list_as_str() y llamarlo muchas veces siempre que desee obtener una lista de tuplas como cadena (Un concepto de reutilización de código).

>>> def get_list_as_str(a):
...     text = " ".join(str(tup).replace(" ", '') for tup in a)
...     return text
... 
>>> 
>>> a = [(1, 5, 6), (4,7, 8, 9), (4, 7)]
>>> text = get_list_as_str(a)
>>> print(text)
(1,5,6) (4,7,8,9) (4,7)
>>> 
>>> b = [(1,1), (4,7, 8), (3, 3, 2, 9, 10, 5 * 6)]
>>> text = get_list_as_str(b)
>>> print(text)
(1,1) (4,7,8) (3,3,2,9,10,30)
>>> 

Eso es todo.

0
hygull 11 may. 2019 a las 03:45

Si todo lo que necesita hacer es obtener una salida de cadena, entonces:

  1. Convertir a una cadena
  2. Pelar los soportes

str(a).strip("[]")

Fuera: '(5,2) (2,4)'

1
EchoCloud 10 may. 2019 a las 16:51

No estoy seguro de si esta es la mejor manera de hacerlo, pero esto definitivamente ayuda.

a = [(5, 2), (2, 4)]
(str(a)[1:-1]).replace("),",')')

Salida:

'(5, 2) (2, 4)'
0
Sridhar Murali 10 may. 2019 a las 04:26