2017-02-01 4 views
-2
예를 들어

와 목록의 차이를 알려면, 우리는파이썬에서 목록의 두 목록을 비교하고 같은 인덱스

ListofLists1 = [[0], [0], [1, 3], [1, 4], []] 

ListofLists2 = [[0, 2], [0, 1, 2, 3], [1, 3, 4], [1, 3, 4], [0, 1, 3]] 

이있는 경우 우리는

Diff = ListofLists2 - ListofLists1 
을 정의

다음 형식으로 출력하고 싶습니다.

Diff = [[2], [1,2,3], [4], [3], [0,1,3]] 

내가하고있는 특정 작업에 대해 ListofLists2의 해당 목록 (동일한 색인)에 포함 된 ListofLists1 내의 모든 목록을 항상 찾을 것으로 기대합니다. 그러나 ListofLists2 내의 목록에는 ListofLists1의 해당 목록 안에 존재하지 않는 요소가 포함될 수 있습니다.

+1

StackOverflow에 오신 것을 환영합니다. 도움말 설명서의 게시 지침을 읽고 따르십시오. [주제] (http://stackoverflow.com/help/on-topic) 및 [묻는 방법] (http://stackoverflow.com/help/how-to-ask) 여기를 참조하십시오. StackOverflow는 코딩 또는 튜토리얼 서비스가 아닙니다. 도움을 요청하기 전에 직접 시도하십시오. Stack Overflow 지침에 따라 시도를 게시하십시오. – Prune

답변

3

함께 두 목록을 우편, 각각리스트 형으로 설정 결과적 설정, 지능형리스트의 일부로서 그들을 통해 반복하고 각각의 경우에 설정 대칭 차이를 찾을 :

ListofLists1 = [[0], [0], [1, 3], [1, 4], []] 
ListofLists2 = [[0, 2], [0, 1, 2, 3], [1, 3, 4], [1, 3, 4], [0, 1, 3]] 

[list(set(l1).symmetric_difference(l2)) for l1,l2 in zip(ListofLists1,ListofLists2)] 

을 제공합니다 :

[[2], [1, 2, 3], [4], [3], [0, 1, 3]] 
0

또 다른 해결책은 지금 내 머리를 때렸다.

Diff = map(lambda x,y: list(set(x) - set(y)), ListofLists2, ListofLists1) 

에 대해 이것은 또한

ListofLists1 = [[0], [0], [1, 3], [1, 4], []] 
ListofLists2 = [[0, 2], [0, 1, 2, 3], [1, 3, 4], [1, 3, 4], [0, 1, 3]] 

이 방법은 psychemedia의 답을 비교하는 것입니다 방법에 대한 생각에 대한

Diff = [[2], [1,2,3], [4], [3], [0,1,3]] 

(목록의 구현 속도의 관점에서 반환 무엇하는 일반적으로 길이가 수천 만 개입니까?)

관련 문제