Estoy tratando de imprimir los valores de una lista sin saltos de línea usando sys.stdout.write()
. Funciona muy bien, pero el único problema es que quiero separar cada valor de otro. En otras palabras, en lugar de 123
, quiero 1 2 3
. Busqué una solución en el sitio web, pero no he encontrado algo que involucre listas.
Cuando agrego " "
a sys.stdout.write(list[i])
, así: sys.stdout.write(list[i], " ")
, no se imprime en absoluto. ¿Alguna sugerencia de cómo arreglar eso?
Aquí está mi código:
import random import sys list = [] length = input("Please enter the number of elements to be sorted: ") randomNums = input("Please enter the number of random integers to be created: ") showList = raw_input("Would you like to see the unsorted and sorted list? y/n: ") for i in range(length): list.append(random.randint(1,randomNums)) if(showList == "y"): for i in range(length): sys.stdout.write(list[i], " ")
Tratar
sys.stdout.write(" ".join(list))
Lo anterior solo funcionará si la list
contiene cadenas. Para que funcione para cualquier lista:
sys.stdout.write(" ".join(str(x) for x in list))
Aquí usamos una expresión generadora para convertir cada elemento de la lista en una cadena.
Si su lista es grande y le gustaría evitar asignarle toda la cadena, el siguiente enfoque también funcionará:
for item in list[:-1]: sys.stdout.write(str(item)) sys.stdout.write(" ") if len(list) > 0: sys.stdout.write(list[-1])
Y como se mencionó en la otra respuesta, no llame a su list
variables. En realidad, estás siguiendo el tipo incorporado con el mismo nombre.
Tu puedes hacer:
sys.stdout.write(" ".join(my_list))
Además, es mejor no nombrar su list
variables, ya que Python ya tiene un tipo incorporado llamado list
. Por lo tanto, es por eso que he cambiado el nombre de su variable a my_list
.