Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从列表的比较(python)中找到另一个列表的内容不匹配列表_Python_List - Fatal编程技术网

如何从列表的比较(python)中找到另一个列表的内容不匹配列表

如何从列表的比较(python)中找到另一个列表的内容不匹配列表,python,list,Python,List,我有两份清单: mylist1=[['a','1'],['a',''],['a','1'],['a','3'],['b','2'],['c','2'],['c','3'],['c',''],['c','2']] 及 我想从“mylist2”中找出那些零位和第一位项目不在“mylist1”中的列表,如 也在上面的结果中考虑列出MyList1〔1〕=[a’,'’]和MyList1 [ 7 ]=[’c’,'′](在它们的第一位中有空),第一位与MyList2.0/P>中的任何列表不匹配。 有什么解

我有两份清单:

mylist1=[['a','1'],['a',''],['a','1'],['a','3'],['b','2'],['c','2'],['c','3'],['c',''],['c','2']] 

我想从“mylist2”中找出那些零位和第一位项目不在“mylist1”中的列表,如

也在上面的结果中考虑列出MyList1〔1〕=[a’,'’]和MyList1 [ 7 ]=[’c’,'′](在它们的第一位中有空),第一位与MyList2.0/P>中的任何列表不匹配。


有什么解决办法吗?

以下几点应该适合您:

[x for x in mylist2 if x[:2] not in mylist1]

通过将列表对象切换为
set
对象并使用它们的一种方法来比较集合,可以很容易地找到重叠/非重叠集合

要达到这个目的,您可能需要切掉“数据”部分(标签字符串-chocolate等)

有很多方法可以做到这一点。这是一个例子:

>>> aa = [[1,'a'],[2,'b'],[3,'c'],[4,'d'],[5,'e']]
>>> ak = dict(aa)
>>> ak
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
>>> ak.keys()
[1, 2, 3, 4, 5]
>>> a = set(ak.keys())
>>> b = set([4,5,6,7,8])
>>> a.difference(b)
set([1, 2, 3])
>>> ra = list(a.difference(b))
>>> aa = [[1,'a'],[2,'b'],[3,'c'],[4,'d'],[5,'e']]
>>> aa
[[1, 'a'], [2, 'b'], [3, 'c']]

使用
foo not in bar
代替
not foo in bar
。“它更具可读性。@Avaris,啊,非常正确。当然,在这个问题上也有一个stackoverflow问题:)它使用O(NM)操作(N,M=每个列表的长度)。如果NM>10**6,您将开始看到性能大幅下降,在这种情况下,我建议您将“x[:2]不在mylist1中”更改为“tuple(x[:2])不在set(map(tuple,mylist1))”@robert king:是的,我的列表太大了!!!他们的N*M至少比10*6大四倍。那么我建议你使用集合来加快查找时间。
[x for x in mylist2 if x[:2] not in mylist1]
>>> aa = [[1,'a'],[2,'b'],[3,'c'],[4,'d'],[5,'e']]
>>> ak = dict(aa)
>>> ak
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
>>> ak.keys()
[1, 2, 3, 4, 5]
>>> a = set(ak.keys())
>>> b = set([4,5,6,7,8])
>>> a.difference(b)
set([1, 2, 3])
>>> ra = list(a.difference(b))
>>> aa = [[1,'a'],[2,'b'],[3,'c'],[4,'d'],[5,'e']]
>>> aa
[[1, 'a'], [2, 'b'], [3, 'c']]