我不确定为什么我得到的输出错误。
我的代码:
costList = ['$3.38', '$3.25', '$6.00', '$3.50', '$1.50', '$558.45',
'$0.50', '$9.50', '$0.48', '$0.85', '$0.65', '$0.26', '$1.65', '$3.50']
max_value_index = costList.index(max(costList))
print(max_value_index)
输出:
7
所需\正确的输出:
5
答案 0 :(得分:1)
这是使用内置max
函数和key
来过滤$
并在订购前转换为float
的一种方法:
mx = max(costList, key=lambda x: float(x.lstrip('$')))
# '$558.45'
对于索引:
costList.index(mx)
# 5
答案 1 :(得分:1)
列表中的值是字符串。您需要将它们转换为浮点数
cost_list=[float(entry[1:]) for entry in cost_list]
这将删除美元符号并使所有数字变为数字,然后max函数将按预期工作
答案 2 :(得分:0)
问题在于每个元素都是一个字符串。向前移动第二个元素(切片1:
),然后将其转换为float:
float_list=[float(x[1:]) for x in cost_list]
现在,max(float_list)
将按预期工作。
您可以使用index()
函数找到其索引:
index(max(float_list))
答案 3 :(得分:0)
Max当前将您的值排序为strings
,因此为了找到最大值,我们需要将它们转换为float
。仅使用max()
即可做到这一点。
costList = ['$3.38', '$3.25', '$6.00', '$3.50', '$1.50', '$558.45',
'$0.50', '$9.50', '$0.48', '$0.85', '$0.65', '$0.26', '$1.65', '$3.50']
max_value_index = max(range(len(costList)), key=lambda x: float(costList[x][1:]))
print(max_value_index) # -> 5