在Python中使用.join()

2024-06-25 05:22:05 发布

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

很简单很快的问题。以这个列表为例:

a = ['hello1', 'hello2', 'hello3']
','.join(a)

我希望在列表的最后一个元素前有“and”而不是逗号。所以我会得到:

hello 1, hello 2 and hello 3

而不是。。。。

hello 1, hello 2, hello 3

有没有办法用.join()来实现这一点?我知道我只需要在列表中输入它作为一个简单的例子,但是我在实际程序中需要的列表来自用户输入。


Tags: and用户程序元素hello列表例子逗号
3条回答

你需要在特殊情况下处理小名单:

def my_function(a):
    if a == []:
        return ""
    elif len(a) == 1:
        return a[0]
    else:
        return ', '.join(a[:-1])+' and '+ a[-1]

实际上,您需要分别操作列表的两部分,第一部分包含除最后一个字符串以外的所有内容,而另一部分仅包含最后一个字符串。

def my_func(lst):
    return ', '.join(lst[:-1])+' and '+lst[-1]

或者使用lambda:

f = lambda x: ', '.join(x[:-1]) + ' and '+x[-1]

或者如果你只想让它运行一次:

result = ', '.join(a[:-1]) + ' and ' + a[-1]

蛇和咖啡有最好的方法。另一种(不太有用的)方法:

>>> a = ['hello1', 'hello2', 'hello3']
>>> ' and '.join((', '.join(a[:-1]), a[-1]))
'hello1, hello2 and hello3'

这里使用两个joins-内部join用逗号连接每个元素,直到最后一个元素的第二个。然后使用外部的join将该字符串连接到最后一个元素(a[-1]),即and

相关问题 更多 >