Python, печать разграничила список

Полагайте, что этот код Python для печати списка запятой разделил значения

for element in list:
    print element + ",",

Что является предпочтительным методом для печати таким образом, что запятая не появляется если element заключительный элемент в списке.

исключая

a = [1, 2, 3]
for element in a
  print str(element) +",",

output
1,2,3,
desired
1,2,3
37
задан mjv 8 March 2010 в 03:29
поделиться

5 ответов

>>> ','.join(map(str,a))
'1,2,3'
94
ответ дан 27 November 2019 в 04:12
поделиться

Для этого join .

','.join([str(elem) for elem in a])
2
ответ дан 27 November 2019 в 04:12
поделиться
print ','.join(a)
0
ответ дан 27 November 2019 в 04:12
поделиться

A ','. Join , как предлагается в других ответах, является типичным решением Python; нормальный подход, который я не вижу пока ни в одном из ответов,

print ','.join(str(x) for x in a)

известен как выражение генератора или genexp.

Если вы предпочитаете цикл (или вам нужен цикл для других целей, например, если вы делаете больше, чем просто печать по каждому элементу), есть, конечно, отличные альтернативы:

for i, x in enumerate(a):
  if i: print ',' + str(x),
  else: print str(x),

это впервые switch (работает для любой итерации a, будь то список или иначе), поэтому он ставит запятую перед каждым элементом, кроме первого. Последнее переключение немного менее элегантно и работает только для итераций, которые имеют len () (не для полностью общих):

for i, x in enumerate(a):
  if i == len(a) - 1: print str(x)
  else: print str(x) + ',',

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

Встроенная функция enumerate очень часто бывает полезной, и ее стоит помнить!

13
ответ дан 27 November 2019 в 04:12
поделиться
>>> a=[1,2,3]
>>> a=[str(i) for i in a ]
>>> s=a[0]
>>> for i in a[1:-1]: s="%s,%s"%(s,i)
...
>>> s=s+","+a[-1]
>>> s
'1,2,3'
-3
ответ дан 27 November 2019 в 04:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: