2017-03-01 4 views
0

목록의 개별 목록에있는 요소를 비교해야합니다. 예를 들어 여기 내 두 개의 목록은 다음과 같습니다다른 크기의 두 목록 목록 비교

listing = [['tl.48', 'tl.49', 'tl.57'], ['tl.23', 'tl.45', 'tl.12']]; 
search = [['tl.48','tl.57']]; 

이제 내 목표는 목록의 각 항목에 검색에서 각 항목에 대해보고 두 항목 'tl.48''tl.57' 다음 목록의 항목과 일치하는 경우 나 해당 항목에서를 선택하는 것입니다 목록을 작성하고 빈 목록에 추가하십시오. listing[0]은 3 원소이며, search[0][0]search[0][1]listing[0][0]listing[0][2]에 존재한다. 어떻게하면 listing[0]을 별도의 목록에 넣고 추가 할 수 있습니까? listing[0]의 크기가 4이고 search[0][0]search[0][1]listing[0]에있는 경우 새 목록에 여전히 listing[0]이 추가됩니다. 내가 어떻게 해?

감사합니다.

+1

나는 당신의 설명을 따르기가 어렵습니다. 아마 당신이 예상 출력을 주면 더 쉬울 것입니다 ... –

+0

추가는 단지 ... my_list.append (my_new_element)로 끝납니다. 그래서 그게 뭐가 잘못 되었 니? – Julien

답변

1
[lst for lst in listing if all([True if term in lst else False for term in search[0]])] 

결과 : [['tl.48', 'tl.49', 'tl.57']]

listinglist위한 검사가 각각의 검색어 all 이러한 용어가있는 경우에만이를 추가의 listin 경우.

참고 : 검색은 단일 목록을 포함하는 목록이므로 search[0]을 사용하는 이유입니다. 요소 목록 일 경우 search을 대신 사용하십시오. (동일한 결과, 다른 방법)에 해당한다고

:

result = [] 
for lst in listing: 
    valid = True 
    for term in search[0]: 
     if term not in lst: 
      valid = False 
    if valid: 
     result.append(lst) 

이 경우 (searchlisting이 목록의 두 목록이있는 곳), 당신이 찾을해야 진정한 목록 비교가 될 것입니다 보다 견고한 솔루션.

+0

첫 번째 행'all (검색 용어 [0]의 용어는 먼저)'을 단순화 할 수 있습니다. –