2017-04-19 139 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