2010-04-21 68 views
1

我工作的一個Python擴展模塊上,我的小測試腳本的人在做一些奇怪的事情,即:爲什麼在循環時會出現TypeError?

x_max, y_max, z_max = m.size 

for x in xrange(x_max): 
    for y in xrange(y_max): 
     for z in xrange(z_max): 
      #do my stuff 

什麼是沒有意義的是,循環到達第一結束「 z'迭代,然後拋出一個TypeError,指出「需要一個整數」。如果我嘗試......除了TypeError,並檢查x,y和z的類型,它們都會返回爲<類型'int'>。

我在這裏錯過了什麼嗎?

編輯:它出現我在我的擴展代碼中的某處出現問題。一條一條地拔出這些線條揭示了罪魁禍首。我懷疑引用計數錯誤。感謝您的回覆。

+0

什麼是'm.size'? – Seth 2010-04-21 18:33:10

+0

'#做我的東西'重新分配'z_max'嗎?雖然你沒有正確地向我們展示回溯,但似乎問題出在'_max'變量之一 - 而不是你檢查的三個單字母變量! - ) – 2010-04-21 18:37:01

+0

爲什麼不使用'range( )'列表太長了嗎? – corn3lius 2010-04-21 18:42:39

回答

0

的問題是在這裏:x_max, y_max, z_max = m.size

這句法x_max, y_max, z_max預計上等號的另一端的元組/列表,這樣,除非m.size是一個 - 我把它這是一個整數 - 你需要以下:

x_max = y_max = z_max = m.size

+0

如果'm.size'不是一個序列類型,他會在開始循環之前得到一個'TypeError'。 – Seth 2010-04-21 19:13:31

+0

啊,是的。我想我錯過了那部分。 – ktdrv 2010-04-21 21:35:02

相關問題