2016-07-30 2 views
0

먼저 다른 목록의 하위 집합 질문을 살펴보고 여기에있는 문제와 관련이 없습니다.튜플 목록이 다른 튜플 목록인지 확인

은 내가 하나가 다른 집합의 부분 집합인지 확인하기 위해 노력하고있어 두 목록

>>> l1 = [[(7, -1, 'VBD', 'null', -1, 'looked', 'looked'), (8, 7, 'JJ', 'xcomp', -1, 'shocked', 'shocked')]] 
>>> 
>>> l2 = [(7, -1, 'VBD', 'null', -1, 'looked', 'looked'), (8, 7, 'JJ', 'xcomp', -1, 'shocked', 'shocked'), (9, 8, 'CC', 'cc', -1, 'and', 'and'), (10, 7, 'JJ', 'xcomp', -1, 'angry', 'angry')] 

있습니다.

하지만 그 전에

나는 서로 하나 개의 목록을 뺀 결과를 체크 아웃하고 난 실망스러운 결과를 얻었다 - 내 결과로

>>> [word for word in l1 if word not in l2] 
[[(7, -1, 'VBD', 'null', -1, 'looked', 'looked'), (8, 7, 'JJ', 'xcomp', -1, 'shocked', 'shocked')]] 

>>> [word for word in l2 if word not in l1] 
[(7, -1, 'VBD', 'null', -1, 'looked', 'looked'), (8, 7, 'JJ', 'xcomp', -1, 'shocked', 'shocked'), (9, 8, 'CC', 'cc', -1, 'and', 'and'), (10, 7, 'JJ', 'xcomp', -1, 'angry', 'angry')] 

하는 이유는 무엇입니까 동일한 목록을? 이것은 튜플이라는 사실과 관련이 있습니까?

답변

3

문제는 l1는 튜플들의 목록 (예 : [튜플])의리스트가 있음 (즉, [튜플]). 이것을 변경하면 목록 내재 된 출력이 예상 한 것입니다.

l1 = [(7, -1, 'VBD', 'null', -1, 'looked', 'looked'), (8, 7, 'JJ', 'xcomp', -1, 'shocked', 'shocked')] 
l2 = [(7, -1, 'VBD', 'null', -1, 'looked', 'looked'), (8, 7, 'JJ', 'xcomp', -1, 'shocked', 'shocked'), (9, 8, 'CC', 'cc', -1, 'and', 'and'), (10, 7, 'JJ', 'xcomp', -1, 'angry', 'angry')] 
​ 
a = [word for word in l1 if word not in l2] 
b = [word for word in l2 if word not in l1] 
​ 
print a 
print b 

[] 
[(9, 8, 'CC', 'cc', -1, 'and', 'and'), (10, 7, 'JJ', 'xcomp', -1, 'angry', 'angry')] 
0

세트와 < = 연산자 (부분 집합 임)를 사용할 수 있습니다. l2는 튜플들의 목록 인 반면 사용 issubset

>>> l1 = [2,4,6,8] 
>>> l2 = [2,4,6,8,10] 
>>> set(l1) <= set(l2) 
True 
+0

이미 시도해 보았습니다. 'TypeError : unhashable type : 'list''를 얻습니다. –

0

,

l1 = [(7, -1, 'VBD', 'null', -1, 'looked', 'looked'), (8, 7, 'JJ', 'xcomp', -1, 'shocked', 'shocked')] 
l2 = [(7, -1, 'VBD', 'null', -1, 'looked', 'looked'), (8, 7, 'JJ', 'xcomp', -1, 'shocked', 'shocked'), (9, 8, 'CC', 'cc', -1, 'and', 'and'), (10, 7, 'JJ', 'xcomp', -1, 'angry', 'angry')] 

>>> set(l1).issubset(l2) 
True 
+2

'issubset'는 임의의 반복 가능한 객체를 인수로 취합니다. 먼저 세트를 만들 필요가 없습니다. – chepner

+0

@chepner, thx이 것을 지적하기 위해 방금 내 대답을 업데이트했습니다. – SparkAndShine

+0

'set (l1)'에 의해'TypeError : unhashable type : 'list''와 같은 에러 메시지가 발생하지 않았습니까? –