2011-12-03 49 views
2

我正在寫一個程序,它可以計算列表(data1)中10個數字的最小值和最大值。我收到一個「類型錯誤:‘浮動’對象不是可迭代」爲下面幾行:TypeError:'float'對象不可迭代

temp_min10=min(data1[x-z][3]) 
temp_max10=max(data1[x-z][2]) 

全部程序:

x=int(0) 
for line in data1: 
    if x>=9: 
     min10=0 
     max10=0 
     for z in range(0,10): 
      temp_min10 = temp_max10 = 0 
      temp_min10=min(data1[x-z][3]) 
      if temp_min10<min10: 
       min10=temp_min10 
      temp_max10=max(data1[x-z][2]) 
      if temp_max10>max10: 
       max10=temp_max10 
      d_chan.append([max10,min10]) 
    else: 
     d_chan.append([0,0]) 
     x+=1 

感謝您的幫助!

+1

向我們展示一個'data1'。另外,'int(0)'是什麼? – kindall

+0

是的,絕對是一系列愚蠢的錯誤... data1是包含數字的列表的列表。我最初嘗試int(0),因爲我無法弄清float問題(現在有「x = 0」)。代碼應該遍歷一定數量的數字來確定最大值和最小值。我用一個簡單的函數解決了這個問題。 – user1079546

回答

3

minmax可能ARGS要麼一個迭代或2個或更多標量。 Docs here。你給了它一個不是可迭代的arg;這是一個浮動。

除此之外:(1)顯示的縮進顯然不正確。您需要(a)避免在源文件中使用製表符(b)確保縮進在邏輯上是正確的。 (2)您的代碼正在迭代for line in data1:,但從未再次提及line;看起來你需要仔細檢查你在做什麼x;這並不明顯。

更新再次閱讀你的代碼後:

下面的代碼可能會做你想要什麼。

# These assertions state the presumed effect of code that you have not included. 
assert len(data1) == 10 
assert d_chan == [] 
# I suspect a typo in the OP ... it makes more sense for the 
# two values below to be the same. 
MIN_COL = 3 
MAX_COL = 2 
d_chan = [[0, 0] for i in xrange(9)] 
min10 = min(data1[i][MIN_COL] for i in xrange(10))  
max10 = max(data1[i][MAX_COL] for i in xrange(10)) 
d_chan.append([max10, min10]) 
+0

感謝您的幫助 - 非常愚蠢的錯誤。我用'x'和'作爲data1中的行:'作爲一個複雜的方式來獲得'for len in len(data1)' – user1079546

0
min_number = reduce(min,data1) 
max_number = reduce(max,data1)