繁体   English   中英

从列表列表中排除Python

[英]Exclude items from list of lists Python

我有下一个清单

testList = []

testList.append([0,-10])
testList.append([-12,122])
testList.append([13,172])
testList.append([17,296])
testList.append([-10,80])
testList.append([-16,230])
testList.append([-18, 296])
testList.append([-2, -8])
testList.append([-5,10])
testList.append([2,-4])

和另一个包含前一个列表中元素的列表:

m1 = []
m1.append([0, -10])
m1.append([13, 172])

然后我尝试使用下一个语句从列表testList获取一个子testList

[element for i, element in enumerate(testList) if i not in m1]

但我获得与testList相同的列表。

我怎样才能做到这一点?

问题在于你使用枚举。 我只是一个整数,因此永远不会在列表中只有列表。 尝试这个:

[element for element in testList if element not in m1]

如果您不关心列表中的顺序,则可以使用集合

# result will be a set, not a list
not_in_testlist = set(testlist) - set(m1) 

如果您希望结果再次成为列表:

 # result will be a list with a new order
not_in_m1 = list(set(testlist) - set(m1))

请注意,使用集合将丢失原始列表的顺序,因为集合是无序类型(它们在引擎盖下使用散列)。

如果您需要保留订单,那么Andrew Allaire的回答是正确的:

# result is a list, order is preserved
not_in_testlist = [e for e in testlist if e not in m1] 

试试这个:

def clean_list(my_list, exclusion_list):

    new_list = []
    for i in my_list:
        if i in exclusion_list:
            continue
        else:
            new_list.append(i)

    return new_list

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM