这就是我想要的:
A = [1,2,3]
for a in A:
if a > 1:
del a
print(A)
Run Code Online (Sandbox Code Playgroud)
我希望列表a为[1],但它仍然是[1,2,3].
所以我的真正目标是删除我现在获得的当前元素.
我知道'del'有一种用法:
A = [1,2,3]
for i, a in enumerate(A):
if a > 1:
del A[i]
print(A)
Run Code Online (Sandbox Code Playgroud)
列表a将是[1,3]而不是[1].
因为我用的时候
del a[1] #2
Run Code Online (Sandbox Code Playgroud)
列表A中的orginally 3将需要使用索引1从列表A中获取它而不是使用2.因此我无法成功删除它.
如何删除列表中的当前元素?
改变你迭代的集合几乎绝不是一个好主意.在许多情况下,更好的方法是仅在新列表中选择所需的这些元素.
pythonesque方法是使用列表理解:
a = [1,2,3]
b = [x for x in a if x <= 1]
print (b)
Run Code Online (Sandbox Code Playgroud)
'[ .. for ... if ..]'对于像map和这样的各种列表操作来说,这是一个非常好的语法filter.
请注意,我补充了您的过滤谓词,因为我选择了必须保留的内容,而不是必须删除的内容.
希望这可以帮助!!