【发布时间】:2021-04-01 18:26:35
【问题描述】:
假设我们有一个简单的列表,例如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 文档中查找了删除功能,但没有发现任何有用的东西。
任何想法都值得赞赏。提前致谢
PS:
例如列表a = [obj_1, obj_2, obj_3, obj_4]如果combination = (obj_1, obj_3)是正确的,需要返回为[obj_2, obj_4]
【问题讨论】:
-
使用
combs = list(combinations(a, 2))将其转换为列表 -
你想用下标做什么?
-
很难从那个模糊的伪代码中看出你真正想要做什么。显示出现错误的代码。
-
combinations()不返回列表,而是返回生成器。所以你不能从中删除,因为它会根据你的需要生成组合。这很有用,因为可能有数千或数百万种组合。 -
@Barmar 是的,但是你如何从“combination”中删除“combs”中至少包含两个对象之一的所有元组
标签: python combinations itertools