猿问

自动化无聊的事情:逗号代码:是否有更有效的方法来做到这一点?

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”分隔最后两个。有没有更有效的方法来做到这一点?


慕桂英546537
浏览 1608回答 3
3回答

慕田峪9158850

我相信所有现有的答案都会在结构上(如果不是行为上)改变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

一个美化 0 和 1 元素情况的衬里:'sorry, empty list' if len(animals)==0 else animals[0] if len(animals)==1  else ", ".join(animals[:-1]) + " and " + animals[-1]

一只名叫tom的猫

您可能需要长度 = 0、1 和 2 的特殊情况。但一般情况是:', '.join(x[0:-1]) + ", and " + x[-1]我更喜欢串行逗号。如果不是,请更改", and "为" and "并且不要打扰特殊的套管长度 == 2。
随时随地看视频慕课网APP

相关分类

Python
我要回答