类型错误:'float'对象不可迭代
我正在写一个程序,用来计算一个列表(data1)中10个数字的最小值和最大值。但是我在以下几行代码中遇到了一个错误:“TypeError: 'float' object is not iterable”。
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
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶一样。
有些时候,我们可能会遇到一些问题,比如数据的格式不对,或者数据不完整。这就像是你想把水倒到一个小杯子里,但水桶里的水太多,杯子装不下。
为了避免这些问题,我们可以使用一些工具和方法来确保数据能够顺利地转移。比如,我们可以检查数据的格式,确保它符合要求,就像在倒水之前先看看杯子是不是干净,能不能装水。
总之,处理数据就像是一个小小的搬运工,我们需要确保每一步都做好,这样才能顺利完成任务。
min_number = reduce(min,data1)
max_number = reduce(max,data1)
3
对于 min
和 max
这两个函数,你可以传入一个可迭代的对象(比如列表、元组等),或者两个或更多的单独数值(也叫标量)。具体的说明可以在 这里 找到。你给它传入了一个参数,但这个参数不是可迭代的,而是一个浮点数。
顺便说一下:(1)你代码中的缩进明显不正确。你需要(a)在源文件中避免使用制表符(tab),(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])