在保持原始不变的情况下操作变量的一部分

Manipulate a part of variable while keeping the original intact

在保持原始变量完好无损的同时操作/使用/删除变量的一部分的最干净的方法是什么。

假设我想要以下列表中对应于最高数值的值

例如:

max([1, 2, '3a', '10b'])

应该被评价为

max([1, 2, 3, 10])

并且应该返回值 '10b'

max 函数接受一个 key 参数,用于计算将用于比较的值。例如:

max([1, 2, '3a', '10b'], key=lambda x: x if isinstance(x, int) else int(x[:-1]))

lambda那里填写你自己的转换函数。

使用re.search()函数的扩展方法:

import re

max_item = max([1, 2, '3abc', '10bc'], key=lambda n: int(re.search(r'\d+', str(n)).group(0)))
print(max_item)

输出:

10bc