¿Cómo puedo convertir cada elemento de la lista en una cadena, con el fin de unirlos? [duplicate]

4 minutos de lectura

avatar de usuario
AKM

Necesito unirme a una lista de elementos. Muchos de los elementos de la lista son valores enteros devueltos por una función; es decir,

myList.append(munfunc()) 

¿Cómo debo convertir el resultado devuelto en una cadena para unirlo a la lista?

¿Necesito hacer lo siguiente para cada valor entero?

myList.append(str(myfunc()))

¿Hay una forma más pitónica de resolver problemas de conversión?

avatar de usuario
marca byers

Vocación str(...) es la forma Pythonic de convertir algo en una cadena.

Es posible que desee considerar por qué desea una lista de cadenas. En su lugar, podría mantenerlo como una lista de enteros y solo convertir los enteros en cadenas cuando necesite mostrarlos. Por ejemplo, si tiene una lista de números enteros, puede convertirlos uno por uno en un bucle for y unirlos con ,:

print(','.join(str(x) for x in list_of_ints))

  • str(x) for x in list_of_ints) +40% más lento que map(str, list_of_ints)

    – Oleg

    6 ago 2021 a las 7:00

avatar de usuario
todotucodigo

No hay nada de malo en pasar números enteros a str. Una razón por la que podría no hacer esto es que se supone que myList es una lista de números enteros, por ejemplo, sería razonable sumar los valores de la lista. En ese caso, no pase sus ints a str antes de agregarlos a myList. Si termina sin convertir a cadenas antes de agregar, puede construir una cadena grande haciendo algo como

', '.join(map(str, myList))

  • Es de suponer que el inglés no es su lengua materna. No está seguro de su deseo de unirse a una lista de artículos, muchos de los cuales está convirtiendo str? Considere la posibilidad de que necesite agregar algo de lógica difusa a su analizador 😉

    – John Maquin

    28 de agosto de 2010 a las 9:37

  • @John Consideré eso, pero si él es bueno en inglés, quería presionarlo suavemente para que llevara el nivel de inglés en SO a su nivel normal. Creo que mi respuesta admite varias interpretaciones y situaciones en las que podría estar.

    – todotucódigo

    2 de septiembre de 2010 a las 4:11


avatar de usuario
Prakash norte

Se puede usar la función map en python. Se necesitan dos argumentos. El primer argumento es el función que tiene que ser utilizado para cada elemento de la lista. El segundo argumento es el iterable.

a = [1, 2, 3]   
map(str, a)  
['1', '2', '3']

Después de convertir la lista en una cadena, puede usar el simple unirse función para combinar la lista en una sola cadena

a = map(str, a)    
''.join(a)      
'123'

a=[1,2,3]
b=[str(x) for x in a]
print b

El método anterior es la forma más fácil y general de convertir una lista en una cadena. otro método corto es-

a=[1,2,3]
b=map(str,a)
print b

avatar de usuario
Tomás Turner

Hay tres maneras de hacer esto.

digamos que tienes una lista de enteros

my_list = [100,200,300]
  1. "-".join(str(n) for n in my_list)
  2. "-".join([str(n) for n in my_list])
  3. "-".join(map(str, my_list))

Sin embargo, como se indica en el ejemplo de timeit en el sitio web de python en https://docs.python.org/2/library/timeit.html usar un mapa es más rápido. Así que te recomendaría usar "-".join(map(str, my_list))

  • … y, en orden de velocidad (primero el más rápido): join(map,…) ; join([ … ]) ; join( … ).

    – Manngo

    26 de marzo a las 0:02

avatar de usuario
Ivo van der Wijk

Su problema es bastante claro. Quizás esté buscando extender, para agregar todos los elementos de otra lista a una lista existente:

>>> x = [1,2]
>>> x.extend([3,4,5])
>>> x
[1, 2, 3, 4, 5]

Si desea convertir enteros en cadenas, use str() o la interpolación de cadenas, posiblemente combinada con una lista por comprensión, es decir

>>> x = ['1', '2']
>>> x.extend([str(i) for i in range(3, 6)])
>>> x
['1', '2', '3', '4', '5']

Todo esto se considera pitónico (está bien, una expresión generadora es aún más pitónica, pero sigamos con la sencillez y el tema)

  • … y, en orden de velocidad (primero el más rápido): join(map,…) ; join([ … ]) ; join( … ).

    – Manngo

    26 de marzo a las 0:02

avatar de usuario
jayhola

Por ejemplo:

lst_points = [[313, 262, 470, 482], [551, 254, 697, 449]]

lst_s_points = [" ".join(map(str, lst)) for lst in lst_points]
print lst_s_points
# ['313 262 470 482', '551 254 697 449']

En cuanto a mí, quiero agregar un str antes de cada lista de cadenas:

# here o means class, other four points means coordinate
print ['0 ' + " ".join(map(str, lst)) for lst in lst_points]
# ['0 313 262 470 482', '0 551 254 697 449']

O lista única:

lst = [313, 262, 470, 482]
lst_str = [str(i) for i in lst]
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

lst_str = map(str, lst)
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad