如何删除Python中列出的当前元素?

Mar*_*Lee 0 python list

这就是我想要的:

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.因此我无法成功删除它.

如何删除列表中的当前元素?

War*_*ard 6

改变你迭代的集合几乎绝不是一个好主意.在许多情况下,更好的方法是仅在新列表中选择所需的这些元素.

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.

请注意,我补充了您的过滤谓词,因为我选择了必须保留的内容,而不是必须删除的内容.

希望这可以帮助!!