2015-01-28 5 views
3

Когда я пытаюсь запустить:TypeError: объект '' itertools.combinations не 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 

В основном то, что я Я пытаюсь сделать это: у меня есть список (twoset2) из 2 элементов подмножеств координат (пример: ((2,0) (3,3)). Я хочу получить доступ к каждой отдельной координате, а затем принять разницу между x и y и поместить ее в DSET, но при попытке запустить эту ошибку я получаю.

Пожалуйста, помогите!

+1

где 'itertools.combinations()' в коде? – GLHF

ответ

3

itertools.combinations возвращает генератор, а не список. Это означает, что вы можете перебирать его, но не обращаться к элементу по элементу с индексом, который вы пытаетесь выполнить.

Вместо этого, вы можете получить каждую комбинацию, как так:

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

Это дает:

(1, 2) 
(1, 3) 
(2, 3) 
+0

'a, b = комбинация 'не требуется – GLHF

1

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(...)) 
Смежные вопросы