Python 保留列表中的最大整数

Python retain maximal integer from list

我有一个整数列表,每个整数由三位数字组成

list1 = [505, 504, 503, 502, 207, 206]

如果我们将子集定义为按第一位数字分类的所有值,我想比较列表中的元素并保留每个子集中的最大元素。

例如,这里的子集是 [505, 504, 503, 502][207, 206]

每个子集的最大值 list 将是

max_values = [505, 207]

如何直接从 list1 转到 max_values

假设组中有一个共同的第一个数字:

list1 = [505,504,503,502,207,206]

from itertools import groupby

for k,v in groupby(list1,key=lambda x: str(x)[0]): # use x // 100 if you only have three digit numbers
    print(max(v))

505
207

groupby 使用键 str(x)[0] 对所有元素进行分组,键 str(x)[0] 是列表中所有数字的第一个数字,然后我们在每个分组上调用 max v

如果我答对了你的问题,来自同一组的元素可能会分散在输入中:

>>> def get_group(number):
    return number // 100

>>> result = {}
>>> for element in list1:
    group = get_group(element)
    last_max = result.get(group)
    result[group] = element if last_max is None else max(element, last_max)

>>> result.values()
[207, 505]