У меня есть список 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
?