我试图使用python来获取一系列名称
['mary','lucy','beth','molly']
并构造一个字符串,如:
mary, lucy, beth and molly
尝试在一行中执行此操作,看起来像生成器表达式可能是要走的路。很显然,我可以很容易地得到像#mary,lucy,beth,molly"这样的列表,但是有人知道如何生成一个字符串以包含'和'在最后一项之前?
答案 0 :(得分:4)
以这种方式:
>>> x = ['mary','lucy','beth','molly']
>>> ', '.join(x[:-1]) + ' and ' + x[-1]
'mary, lucy, beth and molly'
这里没有真正需要生成器表达式。
答案 1 :(得分:2)
这是一个稍慢但可能有趣的版本:
names = ['mary', 'lucy', 'beth', 'molly']
last = len(names) - 1
result = ""
for i in range(0, last):
result += names[i] + ", "
result += "and " + names[last]
print(result) # or print result for python2
这导致'mary,lucy,beth和molly'。请注意牛津逗号:)
答案 2 :(得分:0)
你可以沿着这些方向做点什么:
", ".join(array[:-1]) + " and " + array[-1]
答案 3 :(得分:0)
使用字符串格式的另一种看法:
l = ['mary','lucy','beth','molly']
print "{} and {}.".format(", ".join(l[:-1]),l[-1])
mary, lucy, beth and molly.
如果您在以下情况之后丢弃列表,则弹出:
print "{1} and {0}.".format(l.pop(-1),", ".join(l))
答案 4 :(得分:0)
还有一些,
L = ['mary','lucy','beth','molly']
print(', '.join(L[:]).replace((", " + L[-1]), (" and " + L[-1])))
print("%s and %s" % (', '.join(L[:-1]), L[-1]))
mary, lucy, beth and molly
mary, lucy, beth and molly