Python';类型错误';:';发电机&x27;对象不可下标

Python';类型错误';:';发电机&x27;对象不可下标,python,euclidean-distance,Python,Euclidean Distance,我试图用Python执行一个简单的Euclid示例,但收到了标题中提到的错误。代码如下: def gcd1(a,b): """ the euclidean algorithm """ while a: a, b = b%a, a return b def gcd1(a、b): “欧几里德算法” 而a: a、 b=b%a,a 返回b 我按如下方式调用代码(我认为这可能与此有关): 对于set1中的x: 打印(gcd1(

我试图用Python执行一个简单的Euclid示例,但收到了标题中提到的错误。代码如下:

def gcd1(a,b): """ the euclidean algorithm """ while a: a, b = b%a, a return b def gcd1(a、b): “欧几里德算法” 而a: a、 b=b%a,a 返回b 我按如下方式调用代码(我认为这可能与此有关):

对于set1中的x: 打印(gcd1(x,set2[x])) 编辑:当前情况(工作)

set1=列表(范围(开始、结束)) “”“otherrange()的行为与range()类似,但返回一个固定列表”“” set2=列表(其他范围(开始、结束)) 对于set1中的x: 打印(gcd1(x,set2[x]))
这意味着
set2
是一个生成器,要解决这个问题,只需将它转换为一个列表

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

您能告诉我们哪一行有错误,set2是什么吗?这里什么是
otherrange()
?只需使用其他行设置范围即可parameters@Ropstah:
range()
在Python中不是生成器,但您的问题表明您确实有这样一个对象。请给我们一些让我们重现问题的东西。只有这样,我们才能为您提供一个最佳的解决方案,而不仅仅是应用
list()
plast.@MartijnPieters:
otherrange
是一个自定义方法,它基本上返回一个数字列表。虽然我的其余实现可以从优化中获得很大的好处,但我的问题在这里得到了回答。我很想继续聊这个问题。@Ropstah,等一下,我刚才说的可能没有预期的效果。使用我更新的答案。我已经使用了变量,但那些变量指向函数。我只是把所有的东西都放在一个列表里,所以一切都很好(对吗?@Ropstah是的,我想是的 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]))
set2_list = list(set2)
for x in set1:
    print(gcd1(x, set2_list[x]))