假设我有一个这样的列表:
['v_1', 'v_2', 'v_8', 'v_5']
如何从此列表中获得8?
答案 0 :(得分:1)
您可以轻松地将字符串转换为数字,并且只需要最大值。假设列表中的所有内容都是"v_#"
形式,其中#
是一个整数:
m = max(int(x[2:]) for x in my_list)
答案 1 :(得分:1)
max(l, key=lambda s: int(s[2:]))
答案 2 :(得分:0)
使用max()
和str.index()
函数的解决方案(将_
视为分隔符):
l = ['v_1', 'v_2', 'v_8', 'v_5']
m = max(v[v.index('_')+1:] for v in l)
print(m) # 8
答案 3 :(得分:0)
max
接受一个关键字参数,该参数允许您指定一个函数来转换每个列表元素,然后再进行比较以找到最大值。
比较以下内容:
# Lexicographically, `v_8` is bigger than `v_12`
>>> max(['v_1', 'v_2', 'v_8', 'v_5', 'v_12'])
'v_8'
# Numerically, 12 > 8 after striping the v_ prefix and treating
# the remainder as an integer
>>>>>> max(['v_1', 'v_2', 'v_8', 'v_5', 'v_12'], key=lambda x: int(x[2:]))
'v_12'