Печать списка 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