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]
我有一个整数列表,每个整数由三位数字组成
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]