TypeError:'float'对象不可迭代

时间:2011-12-03 23:54:11

标签: python

我正在编写一个程序,用于计算列表中的10个数字的最小值和最大值(data1)。我收到的“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

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

minmax的可能参数是一个可迭代或两个或更多个标量。文档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])

答案 1 :(得分:0)

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