2017-04-19 127 views
3

如何獲取列表中最大長度的子列表?從數組python中選擇最大值

我有這樣的代碼:

c = [1,2] 
a = [[1,2], [3,4], [3,2]] 
for b in a: 
    g = len(list(set(b) - set(c))) *#list of difference items between c and b in a* 
    print(g) 

結果

0 
2 
1 

我需要得到ba最長長度>>g = 2

我用

y = [b for b in a if max (g)] 

TypeError: 'int' object is not iterable

謝謝

回答

4

max(g)並沒有真正多大意義,因爲g只是在前面的循環的最後int值(1)。 max()需要一個迭代 - 因此你的錯誤。但是,即使修復g成爲列表[0, 2, 1]您在列表理解中的防範也不會真的做任何事情,因爲它總是會評估爲True,因爲它相當於編寫if 2

但是你可以使用key計算差值與max()重寫代碼:

>>> c = [1,2] 
>>> a = [[1,2], [3,4], [3,2]] 
>>> max(a, key=lambda x: len(set(x)-set(c))) 
[3, 4] 
0

你可以試試這個

c = [1,2] 
a = [[1,2], [3,4], [3,2]] 
k=max(max(map(lambda x:set(c)-set(x),a))) 
print k if k else 0