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?
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)))
.
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.
Essayez d’utiliser join sur une conversion str de votre ints:
print ' '.join(str(x) for x in array)
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 print
ed et non une valeur pouvant être stockée dans une variable.
print(*array, sep=' ')
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.
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