5 回答
TA贡献1775条经验 获得超8个赞
您可以使用“del”关键字。即,del listA[i]
. 但是,您不应该这样做,原因有两个:
从列表中删除随机元素效率不高
在迭代列表时不应该改变列表。如果我在迭代列表时修改列表,会发生以下情况,请注意它没有看到 2 个元素!
>>> a = [1, 2, 3, 4]
>>> for i, x in enumerate(a):
... print(x)
... del a[i]
...
1
3
最好创建一个临时列表,例如 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)
TA贡献1856条经验 获得超5个赞
给出替代方法:
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]
```
TA贡献1796条经验 获得超7个赞
我会使用简单的列表理解。
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]
TA贡献1856条经验 获得超17个赞
这是一种更简单、更易读、直接的方法。
listA = [1,3,10,12,50,52]
listB = []
listA2 = []
for val in listA:
if val > 10:
listB.append(val)
else:
listA2.append(val)
listA = listA2
print(listA, listB)
输出:
[1, 3, 10] [12, 50, 52]
TA贡献1845条经验 获得超8个赞
您可以通过使用来做到这一点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)
添加回答
举报