我正在尝试将项目从一个列表转移到另一个列表(如下所示),但结果确实令人费解。有谁知道这里发生了什么?
l1=range(1,11)
l2=[]
for i in l1:
if i>=6:
l2.append(i)
l1.remove(i)
print l1
print l2
l1 = [1-5, 7, 9] # and
l2 = [6, 8, 10] # !!
问题是由于您正在修改您正在迭代的列表。
如果你在 SO 上搜索,你会发现很多关于这个的帖子。例如,在迭代时修改列表,Python:在迭代列表时删除列表元素等
你不应该修改你正在迭代的列表,否则你会得到奇怪的结果。这就像砍掉你坐的树枝。如何基于创建两个列表l1
?
big = [x for x in l1 if x >= 6]
small = [x for x in l1 if x < 6]
更好的是,如果您关心性能:
big = []
small = []
for item in l1:
if item >= 6:
big.append(item)
else:
small.append(item)