animals = ["rat", "cat", "bat", "mouse", "zebra", "barbeque", "chicken"]def joiner(joined): while True: if len(joined) == 0: break else: lister = ", ".join(joined[:-1]) lister = lister + " and " + joined[-1] print(lister) break joiner(animals) 这是我的代码,它将接受一个列表并返回一个用逗号分隔的字符串,并用“and”分隔最后两个。有没有更有效的方法来做到这一点?
3 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
我相信所有现有的答案都会在结构上(如果不是行为上)改变OP代码。我相信,这不会:
animals = ["rat", "cat", "bat", "mouse", "zebra", "barbeque", "chicken"]
def joiner(x):
if x:
print(', '.join(x[0:-1]) + " and " + x[-1])
joiner(animals)
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
一个美化 0 和 1 元素情况的衬里:
'sorry, empty list' if len(animals)==0 else animals[0] if len(animals)==1 else ", ".join(animals[:-1]) + " and " + animals[-1]
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
您可能需要长度 = 0、1 和 2 的特殊情况。但一般情况是:
', '.join(x[0:-1]) + ", and " + x[-1]
我更喜欢串行逗号。如果不是,请更改", and "
为" and "
并且不要打扰特殊的套管长度 == 2。
添加回答
举报
0/150
提交
取消