当我尝试跑步时:
temp = (twoset2[x][i][0]-twoset[x][i][1])
我明白了:
TypeError:' itertools.combinations'对象不可订阅
我的代码:
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)
)。我想访问每个单独的坐标,然后取x
和y
之间的差异并将其放入DSET
,但我在尝试运行时遇到上述错误。
请帮忙!
答案 0 :(得分:4)
itertools.combinations
返回生成器而不是列表。这意味着您可以迭代它但不能按照您尝试的方式逐个元素地访问它。
相反,你可以像这样得到每个组合:
import itertools
for combination in itertools.combinations([1,2,3], 2):
print combination
这给出了:
(1, 2)
(1, 3)
(2, 3)
答案 1 :(得分:2)
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(...))