2016-06-04 4 views
3

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

#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 (most recent call last):

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

IndexError: list index out of range

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

+0

'i' в вашем цикле for является элементом из вашего массива, а не индексом. –

ответ

5

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

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))).

+0

Это было действительно так, спасибо! – KimioN42

2

Попробуйте использовать объединение по конверсии ул ваших Интс:

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

Это также работает, и это даже лучше, потому что он добавляет конец строки после завершения печати списка, спасибо! – KimioN42

3

они оба будут работать в 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 

Кстати, array является зарезервированным словом Python.

1

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

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

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

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

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

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

print(*array, sep=' ') 
Смежные вопросы