Полагайте, что этот код 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
Для этого join
.
','.join([str(elem) for elem in a])
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 очень часто бывает полезной, и ее стоит помнить!
>>> 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'