考虑这个用于打印逗号分隔值列表的 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(map(str,a))
'1,2,3'
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),
这是一个首次切换(适用于任何可迭代的 a,无论是列表还是其他),因此它将逗号 放在每个项目之前,但第一个除外。最后一次切换稍微不太优雅,它仅适用于具有 len()
的可迭代对象(不适用于完全通用的可迭代对象):
for i, x in enumerate(a):
if i == len(a) - 1: print str(x)
else: print str(x) + ',',
此示例还利用最后一次开关在打印最后一项时终止该行。
内置函数
enumerate通常很有用,值得牢记!
您可以使用直接打印答案
print(*a, sep=',')
这将使用分隔符“,”,您将得到答案,
1,2,3
另一个选择是,
print(','.join(str(x) for x in list(a)))
这将迭代列表并打印 (a) 并将输出打印为
1,2,3
print ','.join(a)
def stringTokenizer(sentense,delimiters):
list=[]
word=""
isInWord=False
for ch in sentense:
if ch in delimiters:
if isInWord: # start ow word
print(word)
list.append(word)
isInWord=False
else:
if not isInWord: # end of word
word=""
isInWord=True
word=word+ch
if isInWord: # end of word at end of sentence
print(word)
list.append(word)
isInWord=False
return list
print (stringTokenizer(u"привет парни! я вам стихами, может быть, еще отвечу",", !"))
>>> 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'