为什么这段代码不起作用我使用python3?

时间:2017-12-06 18:14:41

标签: python python-3.x list

我想删除列表的值

lists = [12,15,15,15,3,15,1,6,4,7,888,56248]
while len(lists) is True:
    lists.pop()
print(lists)

但我得到了这个输出:

[12, 15, 15, 15, 3, 15, 1, 6, 4, 7, 888, 56248]

2 个答案:

答案 0 :(得分:2)

此处的问题出在您的条件

while len(lists) is True:

is检查身份,而不是平等。

[1, 2, 3] == [1, 2, 3]  # True
[1, 2, 3] is [1, 2, 3]  # False, they are two distinct (but equivalent) lists.

然而,即使是平等也不正确,因为

42 == True           # False
2 == True            # False
any_nonzero == True  # False
# notably 1 == True
# and     0 == False
# but still (1 is True) == False!

您可以将整数强制转换为布尔值

bool(42) == True           # True
bool(2) == True            # True
bool(any_nonzero) == True  # True

但是将强制措施留给Python

通常会更好
while lists:
    lists.pop()
# or more simply:
# lists = []

答案 1 :(得分:-1)

如果通过“删除”表示删除元素并减少列表,则可以使用for循环遍历列表副本:

for n in lists[:]:
    lists.remove(n)

相反,如果您希望列表中包含无(或0)值列表,则可以这样执行:

newlists = [0] * len(lists)

正如之前评论中所建议的那样。