我正在编写一个程序,用于计算列表中的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
感谢您的帮助!
答案 0 :(得分:3)
min
和max
的可能参数是一个可迭代或两个或更多个标量。文档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)