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

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

4

3 回答 3

3

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

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

您的if测试本身也是错误的。在任何情况下,您都不需要测试,就是. 但在您的情况下,您测试以下内容:== Trueifif

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

总是假的。在 python 中,比较运算符如in==链式的。离开== True会使你的while循环工作得更好。

不过,我不确定您是否理解调用list()字符串时会发生什么;它会将其拆分为单个字符:

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

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

>>> 'Some,string'.split(',')
['Some', 'string']
于 2012-10-13T09:12:20.380 回答
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() is a much better option for what you are trying to do here.

于 2012-10-13T09:13:45.317 回答
-1

关于什么list("Muutujad (sisesta formaadis A,B,C,...): ".replace(' ', ''))

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

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

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

于 2012-10-13T09:11:31.473 回答