TypeError: 'itertools.combinations' object is not subscriptable

TypeError: 'itertools.combinations' object is not subscriptable

当我尝试 运行:

temp = (twoset2[x][i][0]-twoset[x][i][1])

我得到:

TypeError: 'itertools.combinations' object is not subscriptable

我的代码:

for x in range(0,64):
    for i in range(0,1):
        temp = (twoset2[x][i][0]-twoset[x][i][1])
        DSET[counter2]= temp
        temp = 0
        counter2 += 1

基本上我想做的是:我有一个包含 2 个坐标元素子集的列表 (twoset2)(例如:((2,0) (3,3))。我想访问每个单独的坐标,然后取 xy 之间的差异并将其放入 DSET,但是在尝试 运行 时出现上述错误。

请帮忙!

twoset2 不是列表;它是一个 itertools.combinations 对象(不支持索引):

>>> import itertools
>>> itertools.combinations([1, 2, 3], 2)
<itertools.combinations object at 0x01ACDC30>
>>>
>>> twoset2 = itertools.combinations([1, 2, 3], 2)
>>> twoset2[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'itertools.combinations' object is not subscriptable
>>>

如果你想要一个列表,你需要明确地将其转换成一个列表:

twoset2 = list(itertools.combinations(...))

itertools.combinations returns 生成器而不是列表。这意味着您可以对其进行迭代,但不能像您尝试的那样使用索引逐个元素地访问它。

相反,您可以像这样获得每个组合:

import itertools
for combination in itertools.combinations([1,2,3], 2):
    print combination

这给出:

(1, 2)
(1, 3)
(2, 3)