2013-11-26 65 views
0

我已經定義了我自己的linspace命令來生成一個元素向量。然而,在這個載體的迭代失敗iteration over non sequence of type intpython:用linspace迭代非序列錯誤

這是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) 

我不知道爲什麼的位置變量是不是一個有效的序列。

編輯: 這是我數N的定義,n爲負,則需要如果n小於2,linspace回報b,而不是一個名單來計算

n = abs((beginPos - endPos)/diff) + 1 

回答

1

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返回一個列表。