Estoy escribiendo un fragmento de código que debería mostrar una lista de elementos separados con una coma. La lista se genera con un bucle for. Yo uso el
for x in range(5): print(x, end=",")
El problema es que no sé cómo deshacerme de la última coma que se agrega con la última entrada en la lista. Produce esto:
0,1,2,3,4,
¿Cómo elimino el final ‘,’?
sep=","
como argumento para print()
Usted está casi allí con la statement impresa.
No hay necesidad de un bucle, la impresión tiene un parámetro sep
, así como el end
.
>>> print(*range(5), sep=", ") 0, 1, 2, 3, 4
La print
incorporada toma cualquier número de elementos como argumentos para imprimir. Todos los argumentos que no sean de palabras clave se imprimirán, separados por sep
. El valor predeterminado para sep
es un espacio único.
>>> print("hello", "world") hello world
Cambiando sep
tiene el resultado esperado.
>>> print("hello", "world", sep=" cruel ") hello cruel world
Cada argumento es stringificado como con str()
. Pasar un iterable a la statement de impresión hará que el iterable sea un argumento.
>>> print(["hello", "world"], sep=" cruel ") ['hello', 'world']
Sin embargo, si coloca el asterisco delante de su iterable esto lo descompone en argumentos separados y permite el uso previsto de sep
.
>>> print(*["hello", "world"], sep=" cruel ") hello cruel world >>> print(*range(5), sep="---") 0---1---2---3---4
join
como alternativa El enfoque alternativo para unir una iterable en una cadena con un separador dado es usar el método de join
de una cadena separadora.
>>>print(" cruel ".join(["hello", "world"])) hello cruel world
Esto es un poco más torpe porque requiere que los elementos que no pertenecen a una cadena se conviertan explícitamente en cadenas.
>>>print(",".join([str(i) for i in range(5)])) 0,1,2,3,4
El enfoque que sugiere es uno donde se usa un bucle para concatenar una cadena que agrega comas en el camino. Por supuesto, esto produce el resultado correcto pero es un trabajo mucho más difícil.
>>>iterable = range(5) >>>result = "" >>>for item, i in enumerate(iterable): >>> result = result + str(item) >>> if i > len(iterable) - 1: >>> result = result + "," >>>print(result) 0,1,2,3,4
Puede usar str.join()
y crear la cadena que desea imprimir y luego imprimirla. Ejemplo –
print(','.join([str(x) for x in range(5)]))
Demo
>>> print(','.join([str(x) for x in range(5)])) 0,1,2,3,4
Estoy utilizando la comprensión de lista anterior, ya que es más rápida que la expresión del generador, cuando se usa con str.join
.
Para hacer eso, puedes usar str.join()
.
In [1]: print ','.join(map(str,range(5))) 0,1,2,3,4
Tendremos que convertir los números en el range(5)
a la cadena primero para llamar a str.join()
. Lo hacemos utilizando la operación map()
. Luego nos unimos a la lista de cadenas obtenidas de map()
con una coma,.