Python保留列表中的最大整数

时间:2015-01-03 23:54:05

标签: python list

我有一个由三位数组成的整数列表

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

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

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

每个子集的最大值list将为

max_values = [505, 207]

如何直接从list1转到max_values

2 个答案:

答案 0 :(得分:1)

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

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]对所有元素进行分组,这是列表中所有数字的第一个数字,然后我们在每个分组v上调用max。

答案 1 :(得分:1)

如果我正确地得到了您的问题,那么来自同一组的元素可能会分散在输入中:

>>> 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]