我已经定义了自己的linspace命令来生成元素向量。然而,对这个向量的迭代失败了iteration over non sequence of type int
这是linspace
def linspace(a, b, n=100):
if n < 2:
return b
diff = (float(b) - a)/(n - 1)
# return [diff * i + a for i in range(n)]
linlist = []
for i in range(n):
linlist.append(diff * i + a)
return linlist
这是我的for循环
n = (beginPos - endPos) / diff + 1
positions = linspace(beginPos, endPos, n)
for z in positions:
## Move to new position
MoveTo(z)
我不知道为什么position变量不是有效序列。
编辑: 这是我对n的定义n是负数,需要计算为
n = abs((beginPos - endPos) / diff) + 1
答案 0 :(得分:1)
如果n
小于2,则linspace
会返回b
,而不是列表。
if n < 2:
return b # <----
>>> def linspace(a, b, n=100):
... if n < 2:
... return b
... diff = (float(b) - a)/(n - 1)
... # return [diff * i + a for i in range(n)]
... linlist = []
... for i in range(n):
... linlist.append(diff * i + a)
... return linlist
...
>>> linspace(1, 100, n=1)
100
>>> for z in linspace(1, 100, n=1): pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
调整return b
以返回列表。