2015-01-03 71 views
0

最大整數我有三個數字組成一列整數每個Python的保留,從名單

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

如果我們定義一個子集,通過他們的第一個數字分類的所有值,我想比較列表元素,並保留每個子集中的最大值。

因此,舉例來說,在這裏,子集是[505, 504, 503, 502][207, 206]。然後

所得到的來自每個子集最大值的list

max_values = [505, 207] 

我怎麼能直接從list1max_values

+3

必須有開始用5或2或rule.Like數字etc.This不是明確的問題。它可以是該清單中的所有內容,您的規則是什麼?數字的範圍是什麼? –

+1

在列表中設置了什麼? – sashas

+0

@sasha http://stackoverflow.com/questions/27713046/number-of-triangles-containing-the-point-0-0/27713202#27713202這是我見過的最好的答案。 +1! –

回答

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

+0

太棒了!這工作。這個論壇真的很棒:-)。非常感謝Padraic。如果你可以花一些時間解釋你的代碼,這將是很好的。我是python新手,所以我會更好地理解。感謝你的寶貴時間。 – Danira

+0

@PadraicCunningham我在想的東西,但你的速度和簡單性:) – Jivan

+0

打我都還可以用'鍵=拉姆達X工作:X // 100',取決於OP – Jivan

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]