从一个列表到另一个列表的 Pythonic 弹出

Avi*_*ker 0 python list

我有两个清单

a = [1,2,3]
b = []
Run Code Online (Sandbox Code Playgroud)

如果满足某个条件,我想从列表 a 中移动一个元素。

a = [1,3]
b = [2]
Run Code Online (Sandbox Code Playgroud)

下面的代码显示了一个示例,但是,我想在单个循环中执行此操作。我如何更有效地做到这一点?

a = [1,2,3]
b = []
pop_list = []
for i in range(len(a)):
    if a[i] == 2:
        print("pop:", a[i])
        pop_list.append(i)

for i in range(len(pop_list)):
    b.append(a.pop(pop_list[i]))
# Reset pop_list
pop_list=[]
Run Code Online (Sandbox Code Playgroud)

理想情况下,我不会生成新列表 b。

Pru*_*une 5

一对列表推导式可以完成这项工作:一个为 选择所需的元素b,另一个将它们从a

b = [i for i in a if i == 2]
a = [i for i in a if i != 2]
Run Code Online (Sandbox Code Playgroud)