我面臨著相當奇怪的列表情況。在這種情況下,Python 似乎對刪除哪些零非常有選擇性:count = 0a = ["a",0,0,"b",None,"c","d",0,1,False,0,1,0,3,[],0,1,9,0,0,{},0,0,9]for x in a: if x == 0: a.remove(x) count += 1print(a, count)僅刪除 10 個零中的 6 個。為什么 ?
3 回答

蕪湖不蕪
TA貢獻1796條經驗 獲得超7個贊
一個更好的解決方案是只創建一個不包含 0 的新列表:
b = [x for x in a if x != 0]
count = len(a) - len(b)

HUX布斯
TA貢獻1876條經驗 獲得超6個贊
要解決評論中的人描述的問題,您可以執行以下操作:
count = 0
a = ["a",0,0,"b",None,"c","d",0,1,False,0,1,0,3,[],0,1,9,0,0,{},0,0,9]
for x in a.copy():
if x == 0:
a.remove(x)
count += 1
print(a, count)
然后,您將遍歷原始a,同時0在遇到它時將其減少。
警告:
>>> False == 0
True

largeQ
TA貢獻2039條經驗 獲得超8個贊
x = ["a",0,0,"b",None,"c","d",0,1,False,0,1,0,3,[],0,1,9,0,0,{},0,0,9]
list(filter(lambda a: a != 0, x))
輸出
['a', 'b', None, 'c', 'd', 1, 1, 3, [], 1, 9, {}, 9]
添加回答
舉報
0/150
提交
取消