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

我这里有一个简单的程序,如果数字的值大于 10,我会尝试将数字从 移至 。listA但是在移至 listB 后如何将其删除?listBlistA


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)


肥皂起泡泡
浏览 1634回答 5
5回答

www说

您可以使用“del”关键字。即,del listA[i]. 但是,您不应该这样做,原因有两个:从列表中删除随机元素效率不高在迭代列表时不应该改变列表。如果我在迭代列表时修改列表,会发生以下情况,请注意它没有看到 2 个元素!>>> a = [1, 2, 3, 4]>>> for i, x in enumerate(a):...   print(x)...   del a[i]... 13最好创建一个临时列表,例如 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 = tmpAprint(listA, listB)

RISEBY

给出替代方法:listA = [1,3,10,12,50,52]listB = [x for x in listA if not x>10]listA = [x for x in listA if x>10]print(listB)# [1, 3, 10]print(listA)# [12, 50, 52]```

芜湖不芜

我会使用简单的列表理解。listA = [1, 3, 10, 12, 50, 52]listB = [item for item in listA if item > 10]listA = [item for item in listA if item not in listB]print(listA, listB)#[1, 3, 10] [12, 50, 52]

慕慕森

这是一种更简单、更易读、直接的方法。listA = [1,3,10,12,50,52]listB = []listA2 = []for val in listA:    if val > 10:        listB.append(val)    else:        listA2.append(val)listA = listA2print(listA, listB)输出:[1, 3, 10] [12, 50, 52]

精慕HU

您可以通过使用来做到这一点list.remove(value)listA = [1,3,10,12,50,52,2,10,3,34]listB = []for i in range(len(listA)):    if listA[i] > 10:        listB.append(listA[i])for val in listB:    listA.remove(val)print(listA, listB)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python