如何从python列表中删除不需要的逗号

时间:2016-08-29 20:08:04

标签: python

我正在为初学者做一个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"结束时摆脱逗号。

感谢您的建议。

5 个答案:

答案 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'