我正在为初学者做一个python练习。我坚持的项目如下:"编写一个函数,它接受一个值列表作为参数,并返回一个字符串,其中所有项目用逗号和空格分隔。您的函数应该能够处理传递给它的任何列表值"
这是我的代码:
def passInList(spam):
for x in range(len(spam)):
z = spam[x] + ', '
print(z,end= ' ')
spam=['apples', 'bananas', 'tofu', 'and cats']
passInList(spam)
预期产量是 - '苹果,香蕉,豆腐和猫等。
我的输出是 - '苹果,香蕉,豆腐和猫,'
我遇到的问题是,我似乎无法在#34; cat"结束时摆脱逗号。
感谢您的建议。
答案 0 :(得分:2)
您可以减少使用join
代码的代码,在其中为分隔符和要连接的列表添加一个列表。
def passInList(spam):
print(', '.join(spam))
spam=['apples', 'bananas', 'tofu', 'and cats']
passInList(spam)
答案 1 :(得分:2)
正如人们在此发布的那样,join
已经存在。但如果练习是为了理解如何实现join
,那么这是一种可能性:
def passInList(spam):
s = spam[0]
for word in spam[1:]:
s += ', ' + word
return s
那就是你取第一个单词,然后用逗号连接每个下一个单词。
实现此目的的另一个选择是使用函数式编程,即在这种情况下,reduce
函数:
def passInList(spam):
return functools.reduce(lambda x, y: x + ', ' + y, spam)
每当使用聚合事物的方案时,就像在前面的实现s += ...
中一样,reduce
会浮现在脑海中。
答案 2 :(得分:0)
使用join
方法:
spam=['apples', 'bananas', 'tofu', 'and cats']
print(', '.join(spam))
答案 3 :(得分:0)
如果x小于len(垃圾邮件)-1,则添加if语句以仅添加逗号, 或者更好的是,使用str类的“连接函数”
答案 4 :(得分:0)
您可以使用通过语法join
调用的'str'.join(list)
函数。它将列表中的所有元素与str
连接在一起
>>> spam=['apples', 'bananas', 'tofu', 'and cats']
>>> my_string = ', '.join(spam)
>>> my_string
'apples, bananas, tofu, and cats'