我有当前的列表列表:
item1 = [3.00, 'Item1']
item2 = [4.50, 'Item2']
item3 = [5.00, 'Item3']
item4 = [2.00, 'Item4']
items = [item1, item2, item3, item4]
我想找到具有最小浮点值的列表。这是我找到它的方法:
minitem = min(min(item[0:]) for item in items)
我理解它在做什么,但我不理解语法(或如何阅读它)。
我自然地将 item[0]
放在内部 min()
调用中,因为这将引用列表中的第一个位置,它是一个 float ,但是我收到“TypeError,'float'对象不可迭代
”。
我不明白为什么我必须为内部 min()
调用指定一个范围,因为它只是我计算最小值的列表中的第一个点。
最佳答案
让我们看一下:
minitem = min(min(item[0:]) for item in items)
item[0:]
与简单的 item
相同(您从第一个元素切片到最后一个元素)。
为 items 中的 item 计算 min(item[0:])
有点不确定,因为它返回 3.00
和 'Item1'< 中较小的一个
,4.50
和 'Item2'
中较小的一个,依此类推。这恰好满足了您的要求(返回 float 而不是字符串),但只是侥幸。
最后,外部 min()
返回最小的 float 。
这是我的写法:
In [7]: min(item[0] for item in items)
Out[7]: 2.0
关于python - 不明白这个用于获取列表列表中最小值的解决方案是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27430677/