Python string.join(list)最后一个条目"和"

时间:2014-11-02 21:45:50

标签: python python-2.7

加入句子部分列表的优雅方式是什么,结果是{a,b和c“list[ 'a', 'b', 'c' ]?简单地指定', '.join()仅实现“a,b,c”。

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

4 个答案:

答案 0 :(得分:5)

L = ['a','b','c']

if len(L)>2:
    print ', '.join(L[:-1]) + ", and " + str(L[-1])
elif len(L)==2:
    print ' and '.join(L)
elif len(L)==1:
    print L[0]

适用于0,1,2和3+长度。

我加入长度为2的原因是为了避免使用逗号:a and b

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

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

答案 1 :(得分:1)

假设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)

答案 2 :(得分:1)

"{} 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'

答案 3 :(得分:0)

l = ['a','b','c']
if len(l) > 1:
    print ",".join(k[:-1]) +  " and " + k[-1]
else:print l[0]

exapmles:

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

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

l=['a']
a