Itertools 组合复制和删除

问题描述

假设我们有一个简单的列表,例如 a = [obj_1,obj_2,obj_3,obj_4]。 其中 obj_1 是基于 from shapely.geometry import polygon自定义对象 现在我们想要获得所有组合的列表。

from itertools import combinations
combs = combintations(a,2)

到目前为止工作正常。在接下来的步骤中,我们要遍历所有组合并返回所有对象的列表,其中不包含属于 combination 的对象。

for combination in combs:
    if combination is correct: # pseudo
        #return a list of all unique objects (obj_x),which doesn't contain combination

我试图跟踪组合在梳子中的位置,但得到了 the TypeError: 'itertools.combinations' object is not subscriptable

我还在 itertools 文档中查找了删除函数,但没有找到任何有用的东西。

任何想法都值得赞赏。提前致谢

附注: 例如列表a = [obj_1,obj_4],如果combination = (obj_1,obj_3)是正确的,需要作为[obj_2,obj_4]

返回

解决方法

迭代 combs,如果元素组合正确,则从 a 中删除它们。

correct_obj = []
for o1,o2 in combs:
    if (o1,o2) is correct:
        if o1 in a:
            a.remove(o1)
        if o2 in a:
            a.remove(o2)

这假设对象是可散列的,因此可以将它们放入一个集合中。如果没有,则将其设为普通列表。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...