类型错误:'float'对象不可迭代

2 投票
2 回答
9849 浏览
提问于 2025-04-17 07:38

我正在写一个程序,用来计算一个列表(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

对于 minmax 这两个函数,你可以传入一个可迭代的对象(比如列表、元组等),或者两个或更多的单独数值(也叫标量)。具体的说明可以在 这里 找到。你给它传入了一个参数,但这个参数不是可迭代的,而是一个浮点数。

顺便说一下:(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])

撰写回答