Печать списка int в одной строке python3

Я новичок в python, и я пытаюсь отсканировать несколько чисел, разделенных пробелами (допустим, предположим, что "1 2 3" в качестве примера) в одной строке и добавить его в список int. Я сделал это, используя:

#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()] 

По-видимому, он работает, поскольку, когда я набираю '1 2 3' и делаю print(array), выход:

[1, 2, 3]

Но я хочу напечатать его в одной строке без скобок и пробелом между цифрами, например:

1 2 3

Я пробовал:

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

Но я получаю сообщение об ошибке:

2 3 Traceback (последний последний вызов):

print (array [i], end = "")

IndexError: индекс индекса вне диапазона

Как я могу распечатать список int (если мои первые две строки кода правы) в одной строке и без скобок и запятых?

Ответ 1

Вы хотите сказать

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

Синтаксис i in array выполняет итерацию по каждому члену списка. Итак, array[i] пытался получить доступ к array[1], array[2] и array[3], но последний из них выходит за пределы (array имеет индексы 0, 1 и 2).

Вы можете получить тот же эффект с помощью print(" ".join(map(str,array))).

Ответ 2

они будут работать в Python 2.7 и 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 является зарезервированным словом в Python.

Ответ 3

Попробуйте использовать join для преобразования str в ваших ints:

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

Ответ 4

У вас есть несколько вариантов, каждый из которых имеет разные общие варианты использования.

Первым будет использование цикла for, как вы описали, но следующим образом.

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

Вы также можете использовать str.join для простого, читаемого однострочного слоя, используя понимание. Этот метод был бы хорош для хранения этого значения для переменной.

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

Мой любимый метод, однако, состоял бы в том, чтобы передать array как *args, с sep из ' '. Обратите внимание, однако, что этот метод будет производить только print ed output, а не значение, которое может быть сохранено для переменной.

print(*array, sep=' ')

Ответ 5

Да, это возможно в Python 3, просто используйте * перед переменной, например:

print(*list)

Это напечатает список, разделенный пробелами.

Ответ 6

Для Python 2.7 еще один трюк:

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