вывод на печать в 1 строку, разделенную запятыми

#python #list #for-loop

#python #Список #for-цикл

Вопрос:

У меня есть 1 список:

 mylist=[John, Stefan, Bjarke, Eric, Weirdo]
 

Я хочу напечатать все это в одной строке, разделенной запятыми, используя цикл for, например:

 for x in mylist:
    print x
 

Как мне это сделать?

Ответ №1:

 print ','.join(mylist)
 

или, если John Stefan и т. Д. Еще Не являются строками:

 print ','.join(str(o) for o in mylist)
 

Комментарии:

1. Еще лучше использовать генератор во втором примере вместо списка, просто опустив квадратные скобки.

2. Извините, я недостаточно хорошо знаком со stackoverflow, он не отображает мои комментарии к редактированию. Улучшено в соответствии с предложением Майкла

Ответ №2:

Другие ответы более умные и более «питонические». Но если вам действительно нужен цикл:

 for item in mylist:
    print item   ',',  # <<<---- here, have a look to the trailing coma!
 

Но это освободит одно место при следующей печати перед печатью. Если вы используете sys.stdout , печать начнется сразу после предыдущей печати:

 >>> import sys
>>> def t():
...     for i in (1, 4, 2):
...         print i   ',',
...     sys.stdout.write('<>')
...     for i in (3, 5):
...         print i   ',',
>>> t()
1, 4, 2,<> 3, 5,
 

sys.stdout.write не добавляет пробелов и 'r заставит печать начинаться с начала строки. Это может быть полезно для обновленного отображения в командной строке.

Итак, чтобы ответить на ваш вопрос:

 for item in mylist:
    sys.stdout.write(item   ',')
 

Но эта строка закончится комой, чего нельзя сказать о str.join функции.

Комментарии:

1. Да, это хороший вариант для быстрого отображения. И поскольку он автоматически добавляет пространство, он обеспечивает читаемый вывод с помощью очень простого кода.

Ответ №3:

Попробуйте сделать это:

 print ','.join(mylist)
 

Цикл for не нужен.

Ответ №4:

Просто для развлечения, есть способ hax0ring в стиле Perl:

 print repr(mylist)[1:-1]
 

😉