web-dev-qa-db-fra.com

Imprimer une liste int en une seule ligne python3

Je connais Python pour la première fois et j'essaie de numériser plusieurs numéros séparés par des espaces (supposons, par exemple, «1 2 3») sur une seule ligne et l'ajouter à une liste d'int. Je l'ai fait en utilisant:

#gets the string 
string = input('Input numbers: ') 
#converts the string into an array of int, excluding the whitespaces
array = [int(s) for s in string.split()] 

Apparemment, ça marche, puisque quand je tape '1 2 3' et fais une print(array) la sortie est:

[1, 2, 3]

Mais je veux l’imprimer sur une seule ligne sans les crochets et avec un espace entre les chiffres, comme ceci:

1 2 3 

J'ai essayé de faire:

for i in array:
    print(array[i], end=" ")

Mais je reçois une erreur:

2 3 Traceback (l'appel le plus récent en dernier):

print (tableau [i], fin = "")

IndexError: index de liste hors limites

Comment puis-je imprimer la liste des éléments (en supposant que mes deux premières lignes de code soient exactes) sur une seule ligne, sans les crochets et les virgules?

13
KimioN42

Tu veux dire

for i in array:
    print(i, end=" ")

La syntaxe i in array parcourt chaque membre de la liste. Donc, array[i] essayait d'accéder à array[1], array[2] et array[3], mais le dernier d'entre eux est hors limites (array a les indices 0, 1 et 2).

Vous pouvez obtenir le même effet avec print(" ".join(map(str,array))).

20
Kundor

ceux-ci fonctionneront à la fois dans Python 2.7 et Python 3.x:

>>> l = [1, 2, 3]
>>> print(' '.join(str(x) for x in l))
1 2 3
>>> print(' '.join(map(str, l)))
1 2 3

btw, array est un mot réservé en Python.

12
Corey Goldberg

Essayez d’utiliser join sur une conversion str de votre ints:

print ' '.join(str(x) for x in array)
6
EoinS

Vous avez plusieurs options, chacune avec différents cas d'utilisation générale.

La première consisterait à utiliser une boucle for, comme vous l'avez décrit, mais de la manière suivante.

for value in array:
    print(value, end=' ')

Vous pouvez également utiliser str.join pour une ligne simple, lisible, utilisant la compréhension. Cette méthode serait utile pour stocker cette valeur dans une variable.

print(' '.join(str(value) for value in array))

Ma méthode préférée, cependant, serait de passer array comme *args, avec un sep de ' '. Notez cependant que cette méthode produira uniquement une sortie printed et non une valeur pouvant être stockée dans une variable.

print(*array, sep=' ')
6
2Cubed

Oui, c'est possible dans Python 3 , utilisez simplement * avant la variable comme:

print(*list)

Cela imprimera la liste séparée par des espaces.

5
Nikhil Gupta

Pour Python 2.7, une autre astuce est la suivante:

arr = [1,2,3]
for num in arr:
  print num,
# will print 1 2 3
0
elad silver