我有一个函数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."
答案 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]+".")