Python 如何从字符串值列表中获取最大值
假设我有这样一个列表:Python 如何从字符串值列表中获取最大值,python,list,Python,List,假设我有这样一个列表: ['v_1', 'v_2', 'v_8', 'v_5'] 如何从该列表中获得8?您可以很容易地将字符串转换为数字,并取最大值。假设列表中的所有内容都是“v#”格式,其中#是一个整数: m = max(int(x[2:]) for x in my_list) 使用max()和str.index()函数的解决方案(考虑将作为分隔符): max接受一个关键字参数,该参数允许您指定一个函数来转换每个列表元素,然后再进行比较以查找最大值 比较以下各项: # Lexicograp
['v_1', 'v_2', 'v_8', 'v_5']
如何从该列表中获得8?您可以很容易地将字符串转换为数字,并取最大值。假设列表中的所有内容都是
“v#”
格式,其中#
是一个整数:
m = max(int(x[2:]) for x in my_list)
使用
max()
和str.index()
函数的解决方案(考虑将作为分隔符):
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'
请出示你的密码。此外,请提供更多详细信息,说明您计划匹配哪些更复杂的场景。你要处理的是两位数,三位数,还是用小数分隔?这些细节很重要。你真的需要提供一个更具体的方案
l = ['v_1', 'v_2', 'v_8', 'v_5']
m = max(v[v.index('_')+1:] for v in l)
print(m) # 8
# 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'