我想删除列表的值
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]
答案 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)
正如之前评论中所建议的那样。