Python string.join(列表)最后一个带有“的条目”;及;

Python string.join(列表)最后一个带有“的条目”;及;,python,python-2.7,Python,Python 2.7,什么是一种优雅的方式来连接句子部分列表,使结果是“a、b和c”,而列表是['a','b','c']?简单地指定,'.join()只能实现“a、b、c” (此外,我确实对此进行了一些搜索,但显然我没有尝试编写短语,因为除了自己列举列表之外,我还没有找到任何东西。)假设len(words)>2,您可以使用,“”连接第一个n-1单词,并使用标准字符串格式添加最后一个单词: def join_words(words): if len(words) > 2: return '

什么是一种优雅的方式来连接句子部分列表,使结果是“a、b和c”,而
列表是
['a','b','c']
?简单地指定
,'.join()
只能实现“a、b、c”

(此外,我确实对此进行了一些搜索,但显然我没有尝试编写短语,因为除了自己列举列表之外,我还没有找到任何东西。)

假设
len(words)>2
,您可以使用
,“
”连接第一个
n-1
单词,并使用标准字符串格式添加最后一个单词:

def join_words(words):
    if len(words) > 2:
        return '%s, and %s' % ( ', '.join(words[:-1]), words[-1] )
    else:
        return ' and '.join(words)
适用于长度0、1、2和3+

我之所以使用长度2,是为了避免使用逗号:
a和b

如果列表长度为1,则只输出
a

如果列表为空,则不输出任何内容

"{} and {}".format(",".join(l[:-1]),l[-1]) if len(l) > 1 else l[0]


In [25]: l =[ 'a']

In [26]: "{} and {}".format(",".join(l[:-1]),l[-1]) if len(l) > 1 else l[0]
Out[26]: 'a'

In [27]: l =[ 'a','b']

In [28]: "{} and {}".format(",".join(l[:-1]),l[-1]) if len(l) > 1 else l[0]
Out[28]: 'a and b'

In [29]: l =[ 'a','b','c']

In [30]: "{} and {}".format(",".join(l[:-1]),l[-1]) if len(l) > 1 else l[0]
Out[30]: 'a,b and c'
示例:

l = ['a','b','c']
a,b and c

l = ['a','b']
a and b

l=['a']
a

将要发布完全相同的答案这假设你总是有3个或更多的单词
l = ['a','b','c']
if len(l) > 1:
    print ",".join(k[:-1]) +  " and " + k[-1]
else:print l[0]
l = ['a','b','c']
a,b and c

l = ['a','b']
a and b

l=['a']
a