从列表中删除包含(“,”)的所有元素

时间:2012-10-13 09:08:50

标签: python list python-3.x

muutujad = list(input("Muutujad (sisesta formaadis A,B,C,...): "))
while "," in muutujad == True:
    muutujad.remove(",")
print (muutujad)

我的大脑说这段代码应该从列表中删除所有逗号,最后删除 该列表应仅包含[" A"," B"," C" ....]但它仍然包含所有元素。当我试图在线可视化代码时,它说像[","在muutujad]总是假,但当我从控制台检查相同的命令时,它说它是真的。我知道这是一个简单的问题,但我想了解基础知识。

3 个答案:

答案 0 :(得分:3)

您可以使用列表推导而不是while循环:

muutujad = [elem for elem in muutujad if elem != ',']

您的if测试本身也是错误的。在任何情况下,从不都需要为== True if进行测试,这就是if 所做的。但在您的情况下,您测试以下内容:

("," in muutujad) and (muutujad == True)

始终将为False。在python中,in==等比较运算符为chained。离开== True会使您的while循环更好。

我不确定你是否理解在字符串上调用list()时会发生什么;它会将它分成单个字符:

>>> list('Some,string')
['S', 'o', 'm', 'e', ',', 's', 't', 'r', 'i', 'n', 'g']

如果您想将输入拆分为以逗号分隔的元素,请改用.split()方法,而不必删除逗号:

>>> 'Some,string'.split(',')
['Some', 'string']

答案 1 :(得分:1)

这里最好的选择是简单地以更好的方式解析字符串:

>>> muutujad = input("Muutujad (sisesta formaadis A,B,C,...): ").split(",")
Muutujad (sisesta formaadis A,B,C,...): A, B, C
>>> muutujad
['A', ' B', ' C']

str.split()对于你在这里尝试做的事情来说是一个更好的选择。

答案 2 :(得分:-1)

list("Muutujad (sisesta formaadis A,B,C,...): ".replace(' ', ''))

怎么样?

Downvoter:我的意思是:这是你从字符串中删除逗号的方法。

您不会将输入从字符串转换为列表,然后从列表中删除逗号,这很荒谬。

你这样做:list(input('...').replace(' ', '')) 或者你使用拆分,如上所述。