如何将值从一个列表移动到另一个列表,同时从第一个列表中删除它们

Chu*_*bee 1 python list

我在这里有一个简单的程序listAlistB如果它们的值高于 10 ,我试图将数字从 移动到。但是listA在它移动到 listB 后如何将其删除?

listA = [1,3,10,12,50,52]
listB = []
for i in range(len(listA)):
    val = listA[i]
    if val > 10:
        listB.append(val)
print(listA, listB)
Run Code Online (Sandbox Code Playgroud)

Sus*_*ush 7

您可以使用“del”关键字。即,del listA[i]。但是,出于以下两个原因,您不应该这样做:

  1. 从列表中删除随机元素效率不高
  2. 您不应该在迭代列表时改变它。如果我在迭代列表时修改列表,会发生以下情况,注意它没有看到 2 个元素!
>>> a = [1, 2, 3, 4]
>>> for i, x in enumerate(a):
...   print(x)
...   del a[i]
... 
1
3
Run Code Online (Sandbox Code Playgroud)

最好创建一个临时列表,比如 tmp_listA,附加到它,然后将其替换为原始列表。不要修改原文。

这就是它的样子:

listA = [1,3,10,12,50,52]
listB = []
tmpA = []
for i in range(len(listA)):
    val = listA[i]
    if val > 10:
        listB.append(val)
    else:
        tmpA.append(val)

listA = tmpA
print(listA, listB)
Run Code Online (Sandbox Code Playgroud)