4 回答

TA貢獻1799條經驗 獲得超9個贊
一對列表推導式即可完成這項工作:一個用于選擇 所需的元素b,另一個用于從中刪除它們a
b = [i for i in a if i == 2]
a = [i for i in a if i != 2]

TA貢獻1853條經驗 獲得超18個贊
您可以對filter兩者itertools.filterfalse使用相同的過濾函數:
from itertools import filterfalse
a = [1,2,3]
b = []
list(filterfalse(lambda x: x == 2, a))
list(filter? ? ?(lambda x: x == 2, a))
[1, 3]
[2]

TA貢獻2021條經驗 獲得超8個贊
如果該元素x存在,您可以將其從 中刪除b并將其附加到a.
a = [1, 2, 3]
b = []
x = 2
def remove_append(a, b, x):
if x in a:
a.remove(x)
b.append(x)
remove_append(a, b, x)
print(a)
print(b)
輸出:
[1, 3]
[2]

TA貢獻1818條經驗 獲得超11個贊
我們必須遍歷所有元素,但是,您可以應用此技巧在一個循環中添加到適當的列表:
(追加到循環比刪除任意位置的元素更有效)
a = [1,2,3]
condition_false, condition_true = [], []
for v in a:
# Add to the right list
(condition_false, condition_true)[v == 2].append(v)
# [1, 3]
print(condition_false)
# [2]
print(condition_true)
添加回答
舉報