如何解决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)
这假设对象是可散列的,因此可以将它们放入一个集合中。如果没有,则将其设为普通列表。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。