muutujad = list(input("Muutujad (sisesta formaadis A,B,C,...): "))
while "," in muutujad == True:
muutujad.remove(",")
print (muutujad)
我的大脑说这段代码应该从列表中删除所有逗号,最后删除 该列表应仅包含[" A"," B"," C" ....]但它仍然包含所有元素。当我试图在线可视化代码时,它说像[","在muutujad]总是假,但当我从控制台检查相同的命令时,它说它是真的。我知道这是一个简单的问题,但我想了解基础知识。
答案 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(' ', ''))
或者你使用拆分,如上所述。