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
提交
取消