Python 如何将列表对象连接成字符串,并用“分隔”分隔最后两个对象;及;

Python 如何将列表对象连接成字符串,并用“分隔”分隔最后两个对象;及;,python,string,Python,String,我有下面的单词列表: s = [ "aaa", "bbb", "ccc" ] s的长度可以等于任何数字(1、2、3等) 我需要通过连接这些单词来生成一个字符串。最后两个单词应与和连接,例如: aaa, bbb and ccc 如果列表仅由两个单词组成,那么结果将是aaa和bbb 我知道如何连接列表中的元素: ", ".join(s) 但是,我正在努力在最后两个单词之间添加和。您可以根据最后一个项目的

我有下面的单词列表:

s = [
  "aaa",
  "bbb",
  "ccc"
]
s
的长度可以等于任何数字(1、2、3等)

我需要通过连接这些单词来生成一个字符串。最后两个单词应与
连接,例如:

aaa, bbb and ccc
如果列表仅由两个单词组成,那么结果将是
aaa和bbb

我知道如何连接列表中的元素:

", ".join(s)

但是,我正在努力在最后两个单词之间添加

您可以根据最后一个项目的长度进行操作:

def和_在一起:
#如果一个元素直接返回该元素
如果len=1:
返回s[0]
#加入“,”
out=“,”。加入
#获取最后一个的长度并查找最后一个逗号的索引
最后的长度=长度(s[-1])
最后一个逗号索引=-2-最后一个逗号长度
#将部分保留到最后一个逗号,并添加“and”,最后添加最后一个字符串
out=out[:最后一个逗号索引]+“和”+s[-1]
返回
使用:

>>和_在一起([“aaa”、“bbb”、“ccc”])
“aaa、bbb和ccc”
>>>和_一起([“aaa”,“bbb”])
“aaa和bbb”
>>>和_在一起([“aaa”])
“aaa”
试试:

一些测试:

tests = [["aaa", "bbb", "ccc"], ["aaa", "bbb"], ["aaa"], []]

for s in tests:
    x = (", ".join(s[:-1]) + " and " + s[-1]) if len(s) > 1 else "".join(s)
    print(x)
印刷品:

aaa、bbb和ccc
aaa和bbb
aaa

您知道如何对列表进行切片以获取除最后一个元素之外的所有元素吗?您知道如何单独获取列表的最后一个元素吗?如果
len=1
,例如
s=[“aaa”]
,您希望发生什么情况?@mkrieger1:好的,好主意。谢谢。@sacuL:输出应该是
aaa
tests = [["aaa", "bbb", "ccc"], ["aaa", "bbb"], ["aaa"], []]

for s in tests:
    x = (", ".join(s[:-1]) + " and " + s[-1]) if len(s) > 1 else "".join(s)
    print(x)