python list的remove方法有一些问题。我已附上以下代码。该代码不会删除len小于3的所有元素

时间:2018-06-02 11:05:15

标签: python list for-loop nested-lists

python list的remove方法有一些问题。 我已附上以下代码。 该代码不会删除长度小于3的所有元素

result=[['10'], ['5'], ['6'], ['12'], ['9'], ['10'], ['5', '9', '10'], 
['5', '10'], ['13'], ['9', '10'], ['1']]

for i in result:
    if len(i)<=2:
        result.remove(i)
print (result)

结果打印为[['5'],['12'],['10'],['5','9','10'],['12']] 任何帮助都非常受欢迎和赞赏

1 个答案:

答案 0 :(得分:2)

问题是,你在迭代它时操纵列表。您最好创建结果列表的过滤副本:

result=[['10'], ['5'], ['6'], ['12'], ['9'], ['10'], ['5', '9', '10'], ['5', '10'], ['13'], ['9', '10'], ['1']]

filtered_result = []

for i in result:
    if len(i)>2:
        filtered_result.append(i)

print(filtered_result)

或者例如使用filter

result = filter(lambda x: len(x)>2, result)

你也可以使用列表理解:

result = [x for x in result if len(x)>2]