为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英546537 2023-08-22 14:57:05
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)


查看完整回答
反对 回复 2023-08-22
?
慕盖茨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]


查看完整回答
反对 回复 2023-08-22
?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

您可能需要长度 = 0、1 和 2 的特殊情况。但一般情况是:

', '.join(x[0:-1]) + ", and " + x[-1]

我更喜欢串行逗号。如果不是,请更改", and "" and "并且不要打扰特殊的套管长度 == 2。


查看完整回答
反对 回复 2023-08-22
  • 3 回答
  • 0 关注
  • 1539 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信