确定列表中的项目是否为列表中的最后一个项目

时间:2019-05-22 19:57:32

标签: python

我有一个函数printListAsSentence(l),其中l应该是list。此函数应将列表中的项目打印成逗号,除非它是列表中的最后一项,否则应以句点结尾。我以为我可以使用l[-1],但这是行不通的。这是我的尝试:

def printListAsSentence(l):
    for item in l:
        if item == l[-1]: #This compares the value of the strings. Only will work if there is no duplicate values.
            print(item + ".", end="")
        else:
            print(item + ",", end="")

一个例子:

names = ['rob', 'jack', 'rob']
printListAsSentence(names)

将输出:

"rob.jack,rob."

4 个答案:

答案 0 :(得分:2)

您可以使用join在每个字符串之间放置一个,,然后串联最后一个点:

print(",".join(l) + ".")

如果您确实想手动循环,则一种方法是使用enumerate

for index, item in enumerate(l):
    if index == len(l)-1:
        # this is the last item
    else:
        # it's not the last item

答案 1 :(得分:1)

也许使用join

names=['rob', 'jack', 'rob']
','.join(names) + '.'
# 'rob,jack,rob.'

答案 2 :(得分:1)

当您重复列表中最后一个项目时,您的尝试将不起作用,因为您要检查的是项目的值,而不是它在列表中的实际位置。您可以使用enumerate()来获取项目的索引及其值。

for index, item in enumerate(l):
    if index = len(l)-1:
        print(item + ".", end="")
    else:
        print(item + ",", end="")

但是使用join的其他建议是更Python化的解决方案。

答案 3 :(得分:0)

您可以使用for循环打印除最后一个项目以外的所有项目,然后在循环之外处理最后一个项目:

for item in l[:-1]:
    print(item, end=",")
print(l[-1]+".")