如何从字符串值列表中获取最大值

时间:2017-06-13 13:18:23

标签: python list

假设我有一个这样的列表:

['v_1', 'v_2', 'v_8', 'v_5']

如何从此列表中获得8?

4 个答案:

答案 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'