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'