2014-09-07 3 views
1

Я пытаюсь выполнить простой пример Euclid в Python, но получаю ошибку, упомянутую в заголовке. Код выглядит следующим образом:Python 'TypeError': объект 'Generator' не подлежит индексированию

 
def gcd1(a,b): 
     """ the euclidean algorithm """ 
     while a: 
       a, b = b%a, a 
     return b 

Я звоню код следующим образом (я думаю, что это могло бы иметь что-то делать с ним):

 
for x in set1: 
    print(gcd1(x, set2[x])) 

Edit: текущая ситуация (работ)

 

set1 = list(range(start, end)) 
""" otherrange() behaves just like range() however returns a fixed list""" 
set2 = list(otherrange(start, end)) 

for x in set1: 
    print(gcd1(x, set2[x])) 
+0

Можете ли вы рассказать нам, какая строка имела ошибку и что такое set2? – tdelaney

+0

Что такое 'otherrange()' здесь? –

+0

только диапазон с другими параметрами – Ropstah

ответ

2

Это означает, что set2 является генератором, чтобы обойти это просто превратить его в список.

set2_list = list(set2) 
for x in set1: 
    print(gcd1(x, set2_list[x])) 
+0

А, это еще одна проблема, с которой я столкнулся позже! Благодаря! – Ropstah

+1

@ Ropstah Держите, то, что я положил раньше, может не работать должным образом. Используйте мой обновленный ответ. – randomusername

+0

Я уже использовал переменные, но указал на функции. Я просто завернул все в список, так что все было хорошо (верно?) – Ropstah

Смежные вопросы