Python enumerate(),float对象不可迭代

时间:2012-08-30 05:26:24

标签: python

我有一个列表a,然后我使用max(a)来获取最大值。下一步我尝试使用enumerate()来获取最大值的第一个位置。但它注意到我只能将enumerate()用于int列表?浮动列表怎么样?有没有办法在float(也有int)列表中获取最大值的第一个位置?非常感谢

a = [1.5, 1.8, 3.1, 4.2, 5.5, 3.2, 4, 2, 1, 5.5, 3, 2.7]
b = max(a)
maxIndex = [i for i, j in enumerate(b) if j == b][0]

追踪(最近一次通话):   文件“”,第1行,in TypeError:'float'对象不可迭代

4 个答案:

答案 0 :(得分:4)

首先,我认为您打算使用enumerate(a)而不是enumerate(b),因为b只是最大浮点数。

其次,你也可以这样做:

maxIndex = a.index(b)

答案 1 :(得分:2)

max(a)返回单个最高值 - 它根本不返回列表(或任何可迭代的)。所以你不能在它上面使用枚举。

答案 2 :(得分:1)

一衬垫:

maxpos = max(enumerate(a), key=lambda p: p[1])[0]

答案 3 :(得分:0)

你有一个错字

maxIndex = [i for i, j in enumerate(a) if j == b][0]