una separar por metodos llenar listas lista len funcion elementos comparar comando caracter cambiar cadenas agregar python python-3.x pretty-print

separar - Imprima una lista de elementos separados por espacios en Python 3



metodos de listas en python (2)

Tengo una lista L de elementos, digo números naturales. Quiero imprimirlos en una línea con un solo espacio como separador. Pero no quiero un espacio después del último elemento de la lista (o antes del primero).

En Python 2, esto se puede hacer fácilmente con el siguiente código. La implementación de la declaración de print (misteriosamente, debo confesar) evita imprimir un espacio adicional antes de la nueva línea.

L = [1, 2, 3, 4, 5] for x in L: print x, print

Sin embargo, en Python 3 parece que el código (supuestamente) equivalente que utiliza la función de print produce un espacio después del último número:

L = [1, 2, 3, 4, 5] for x in L: print(x, end=" ") print()

Por supuesto que hay respuestas fáciles a mi pregunta. Sé que puedo usar la concatenación de cuerdas:

L = [1, 2, 3, 4, 5] print(" ".join(str(x) for x in L))

Esta es una solución bastante buena, pero en comparación con el código de Python 2, lo encuentro contraintuitivo y definitivamente más lento. Además, sé que puedo elegir si imprimir un espacio o no yo mismo, como:

L = [1, 2, 3, 4, 5] for i, x in enumerate(L): print(" " if i>0 else "", x, sep="", end="") print()

pero, de nuevo, esto es peor que lo que tenía en Python 2.

Entonces, mi pregunta es, ¿me estoy perdiendo algo en Python 3? ¿El comportamiento que estoy buscando es compatible con la función de print ?


Puede aplicar la lista como argumentos separados:

print(*L)

y deje que print() se encargue de convertir cada elemento en una cadena. Como siempre, puede controlar el separador configurando el argumento de la palabra clave sep :

>>> L = [1, 2, 3, 4, 5] >>> print(*L) 1 2 3 4 5 >>> print(*L, sep='', '') 1, 2, 3, 4, 5 >>> print(*L, sep='' -> '') 1 -> 2 -> 3 -> 4 -> 5

A menos que necesite la cadena unida para otra cosa, este es el método más fácil. De lo contrario, use str.join() :

joined_string = '' ''.join([str(v) for v in L]) print(joined_string) # do other things with joined_string

Tenga en cuenta que esto requiere la conversión manual a cadenas para cualquier valor no de cadena en L !


list = [1, 2, 3, 4, 5] for i in list[0:-1]: print(i, end='', '') print(list[-1])

¿Los bucles realmente tardan mucho más en correr?

estaba tratando de hacer algo que imprimiera todos los valores de str en una lista separada por comas, insertando "y" antes de la última entrada y surgió esto:

spam = [''apples'', ''bananas'', ''tofu'', ''cats''] for i in spam[0:-1]: print(i, end='', '') print(''and '' + spam[-1])