我正在尝试编写一个函数,该函数以列表值作为参数,并返回一个字符串,其中所有项目均以逗号和空格分隔,最后一项之前插入“ and”。
例如,传递包含值['apples', 'bananas', 'tofu', 'cats']
的列表“垃圾邮件”将返回:"apples, bananas, tofu, and cats"
。
我编写了以下代码:
def thisIsIt(alist):
alist.insert(-1, 'and')
alist1 = alist[:-2]
alist2 = alist[-2:]
for item in alist1:
print(item, end = ", ")
for item in alist2:
print(item, end = " ")
确实会返回的:苹果,香蕉,豆腐和猫。 但是,它被打印为Nonetype而不是字符串。我该如何纠正?
答案 0 :(得分:0)
无论如何,如果您想使用其他解决方案并希望它返回字符串,则可以在python中使用str.join()的功能:
def thisIsIt(alist):
resultString = ", ".join(alist[:-2] + [" and ".join(alist[-2:])])
return resultString
myList = ['apples', 'bananas', 'tofu', 'cats']
myListAsString = thisIsIt(myList)
print(myListAsString)
#apples, bananas, tofu and cats
答案 1 :(得分:0)
代码:
list_sample = ['apples', 'bananas', 'tofu', 'cats']
for i in range(0,len(list_sample)):
if i < len(list_sample)-1 and i != len(list_sample)-2:
print(list_sample[i],end = ", ")
elif i == len(list_sample)-2:
print(list_sample[i],end = " and ")
else:
print(list_sample[i])
输出:
apples, bananas, tofu and cats
答案 2 :(得分:0)
我尝试过 KISS 。 (保持简单愚蠢)
spam = ['apples', 'bananas', 'tofu', 'cats', 'oranges']
def newlist(x):
myStr = ''
if len(x) != 0:
for i in range(len(x)-1):
myStr += str(x[i]+', ')
return(myStr + 'and ' + x[-1])
newlist(spam)
伙计们,我认为对于像我这样的初学者,请尽量保持简单!