0

我正在尝试将项目从一个列表转移到另一个列表(如下所示),但结果确实令人费解。有谁知道这里发生了什么?

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]  # !!
4

2 回答 2

3

问题是由于您正在修改您正在迭代的列表。

如果你在 SO 上搜索,你会发现很多关于这个的帖子。例如,在迭代时修改列表Python:在迭代列表时删除列表元素

于 2012-07-21T17:50:37.480 回答
3

你不应该修改你正在迭代的列表,否则你会得到奇怪的结果。这就像砍掉你坐的树枝。如何基于创建两个列表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)
于 2012-07-21T17:51:15.443 回答