题目:
假定有下面这样的列表:
spam = ['apples', 'bananas', 'tofu', 'cats']
编写一个函数,它以一个列表值作为参数,返回一个字符串。该字符串包含所有表项,表项之间以逗号和空格分隔,并在最后一个表项之前插入 and。例如,将前面的 spam 列表传递给函数,将返回
'apples, bananas, tofu, and cats'
但你的函数应该能够处理传递给它的任何列表。
个人思路:使用insert方法插入’and’,将最后两个元素与其它元素分开处理。
def solution(l):
s = ''
l.insert(-1, 'and')
for i in range(len(l)-2):
l[i] = l[i] + ', '
s = s + l[i]
l[-2] = l[-2] + ' '
s = s + l[-2] + l[-1]
return s
这里最容易出错的就是insert(位置,内容),这里我们是想在’cats’元素之前添加元素’and’,可能会出现
l.insert(-2, 'and')
这样是错误,你可以理解为insert方法占着某个元素之前的位置,在该位置之后的元素会往后移动一个序列。大家可以试一试。
完整代码:
def solution(l):
s = ''
l.insert(-1, 'and')
for i in range(len(l)-2):
l[i] = l[i] + ', '
s = s + l[i]
l[-2] = l[-2] + ' '
s = s + l[-2] + l[-1]
return s
spam = ['apples', 'banans', 'tofu', 'cats']
result = solution(spam)
print(result)
如果有错误,欢迎指出。若有疑问,我会在评论区回答。