Python中的语法列表连接

2024-09-30 01:19:21 发布

您现在位置:Python中文网/ 问答频道 /正文

除了最后一个使用“and”的连接列表的方式之外,最具python风格的方法是什么?在

["foo"] --> "foo"
["foo","bar"] --> "foo and bar"
["foo","bar","baz"] --> "foo, bar and baz"
["foo","bar","baz","bah"] --> "foo, bar, baz and bah"

Tags: and方法列表foo风格方式barbaz
3条回答

尝试这样做,它会考虑到边缘情况并使用format()来显示另一个可能的解决方案:

def my_join(lst):
    if not lst:
        return ""
    elif len(lst) == 1:
        return str(lst[0])
    return "{} and {}".format(", ".join(lst[:-1]), lst[-1])

按预期工作:

^{pr2}$

这个表达式可以做到:

print ", ".join(data[:-2] + [" and ".join(data[-2:])])

如图所示:

^{pr2}$

基于这个有趣的评论。它假定要连接的列表的字符串条目中没有逗号(这无论如何都会有问题,这也是一个合理的假设)

def special_join(my_list):
    return ", ".join(my_list)[::-1].replace(",", "dna ", 1)[::-1]


In [50]: def special_join(my_list):
        return ", ".join(my_list)[::-1].replace(",", "dna ", 1)[::-1]
   ....:

In [51]: special_join(["foo", "bar", "baz", "bah"])
Out[51]: 'foo, bar, baz and bah'

In [52]: special_join(["foo"])
Out[52]: 'foo'

In [53]: special_join(["foo", "bar"])
Out[53]: 'foo and bar'

相关问题 更多 >

    热门问题