Подтвердить что ты не робот

Распечатайте список элементов, разделенных пробелами, в Python 3

У меня есть список L элементов, например натуральных чисел. Я хочу напечатать их в одной строке с одиночным пространством в качестве разделителя. Но я не хочу пробела после последнего элемента списка (или до первого).

В Python 2 это легко сделать с помощью следующего кода. Реализация инструкции print (таинственно, я должен признаться) избегает печати дополнительного пространства перед новой строкой.

L = [1, 2, 3, 4, 5]
for x in L:
    print x,
print

Однако в Python 3 кажется, что (предположительно) эквивалентный код с использованием функции print создает пробел после последнего номера:

L = [1, 2, 3, 4, 5]
for x in L:
    print(x, end=" ")
print()

Конечно, на мой вопрос есть легкие ответы. Я знаю, что могу использовать конкатенацию строк:

L = [1, 2, 3, 4, 5]
print(" ".join(str(x) for x in L))

Это неплохое решение, но по сравнению с кодом Python 2 я нахожу его интуитивно понятным и, безусловно, медленнее. Кроме того, я знаю, что могу выбрать, нужно ли печатать пробел или нет, например:

L = [1, 2, 3, 4, 5]
for i, x in enumerate(L):
    print(" " if i>0 else "", x, sep="", end="")
print()

но опять же это хуже, чем у меня в Python 2.

Итак, мой вопрос: я что-то пропустил в Python 3? Является ли поведение, которое я ищу, поддерживает функцию print?

4b9b3361

Ответ 1

Вы можете применить список в виде отдельных аргументов:

print(*L)

и пусть print() позаботится о преобразовании каждого элемента в строку. Вы можете, как всегда, управлять разделителем, задав аргумент ключевого слова sep:

>>> L = [1, 2, 3, 4, 5]
>>> print(*L)
1 2 3 4 5
>>> print(*L, sep=', ')
1, 2, 3, 4, 5
>>> print(*L, sep=' -> ')
1 -> 2 -> 3 -> 4 -> 5