我有以下“数字”,它们实际上是来自正则表达式的字符串:
nums = ['1', '4', '9', '10']
我想获取最大值,即10
。有没有比列表理解更干净的方法了,例如:
>>> max(nums)
'9'
>>> max([int(item) for item in nums])
10
否则,它将给我9
。
答案 0 :(得分:12)
max
有一个关键字参数key
,该参数带有一个可调用对象,该可调用对象会在比较它们之前以某种方式转换这些值。
>>> max(nums, key=int)
这与列表理解max(int(item) for item in nums)
基本相同,除了需要注意的是,返回的是原始值,而不是返回的转换后的值。这意味着:
>>> a = max(nums, key=int)
>>> b = max(int(item) for item in nums)
>>> repr(a), repr(b)
('10', 10)
答案 1 :(得分:1)
使用AND
函数:
shared_ptr