logo

파이썬 | 두 목록의 교차점

두 목록의 교차는 초기 목록 모두에 공통된 모든 요소를 ​​가져와 다른 목록에 저장해야 함을 의미합니다. 이제 Python에는 목록의 교차를 수행할 수 있는 다양한 방법이 있습니다.
예:

Input : lst1 = [15, 9, 10, 56, 23, 78, 5, 4, 9] lst2 = [9, 4, 5, 36, 47, 26, 10, 45, 87] Output : [9, 10, 4, 5] Input : lst1 = [4, 9, 1, 17, 11, 26, 28, 54, 69] lst2 = [9, 9, 74, 21, 45, 11, 63, 28, 26] Output : [9, 11, 26, 28]>

방법 1:
이는 내장 함수를 사용하지 않은 가장 간단한 방법입니다.



파이썬3




힙 정렬 알고리즘



# Python program to illustrate the intersection> # of two lists in most simple way> def> intersection(lst1, lst2):> >lst3>=> [value>for> value>in> lst1>if> value>in> lst2]> >return> lst3> # Driver Code> lst1>=> [>4>,>9>,>1>,>17>,>11>,>26>,>28>,>54>,>69>]> lst2>=> [>9>,>9>,>74>,>21>,>45>,>11>,>63>,>28>,>26>]> print>(intersection(lst1, lst2))>



>

>

산출:

[9, 11, 26, 28]>

방법 2:
이 방법에는 set() 메소드 .

파이썬3




# Python program to illustrate the intersection> # of two lists using set() method> def> intersection(lst1, lst2):> >return> list>(>set>(lst1) &>set>(lst2))> # Driver Code> lst1>=> [>15>,>9>,>10>,>56>,>23>,>78>,>5>,>4>,>9>]> lst2>=> [>9>,>4>,>5>,>36>,>47>,>26>,>10>,>45>,>87>]> print>(intersection(lst1, lst2))>

>

>

산출:

[9, 10, 4, 5]>

위 프로그램의 시간 복잡도는 O(n)입니다. 여기서 n은 lst1과 lst2 사이의 더 긴 목록의 길이입니다.

프로그램의 공간 복잡도는 O(n)입니다. 여기서 n은 lst1과 lst2 사이의 더 작은 목록의 길이입니다.

방법 3:
이 방법에서 우리는 set() 더 큰 목록 그런 다음 내장 함수를 사용하십시오. 교차점() 교차된 목록을 계산합니다. 교차점() 세트의 일류 부품입니다.

파이썬3




# Python program to illustrate the intersection> # of two lists using set() and intersection()> def> Intersection(lst1, lst2):> >return> set>(lst1).intersection(lst2)> > # Driver Code> lst1>=> [>4>,>9>,>1>,>17>,>11>,>26>,>28>,>28>,>26>,>66>,>91>]> lst2>=> [>9>,>9>,>74>,>21>,>45>,>11>,>63>]> print>(Intersection(lst1, lst2))>

>

>

산출:

{9, 11}>

방법 4:
이를 이용하여 하이브리드 방식 프로그램의 복잡도는 O(n)으로 떨어집니다. 이는 다음 프로그램을 수행하는 효율적인 방법입니다.

파이썬3




# Python program to illustrate the intersection> # of two lists> def> intersection(lst1, lst2):> ># Use of hybrid method> >temp>=> set>(lst2)> >lst3>=> [value>for> value>in> lst1>if> value>in> temp]> >return> lst3> # Driver Code> lst1>=> [>9>,>9>,>74>,>21>,>45>,>11>,>63>]> lst2>=> [>4>,>9>,>1>,>17>,>11>,>26>,>28>,>28>,>26>,>66>,>91>]> print>(intersection(lst1, lst2))>

>

>

산출:

[9, 9, 11]>

방법 5:
다른 목록 내의 하위 목록에 대해 교차가 수행되는 곳입니다. 여기서는 다음과 같은 개념을 사용했습니다. 필터().

파이썬3




# Python program to illustrate the intersection> # of two lists, sublists and use of filter()> def> intersection(lst1, lst2):> >lst3>=> [>list>(>filter>(>lambda> x: x>in> lst1, sublist))>for> sublist>in> lst2]> >return> lst3> # Driver Code> lst1>=> [>1>,>6>,>7>,>10>,>13>,>28>,>32>,>41>,>58>,>63>]> lst2>=> [[>13>,>17>,>18>,>21>,>32>], [>7>,>11>,>13>,>14>,>28>], [>1>,>5>,>6>,>8>,>15>,>16>]]> print>(intersection(lst1, lst2))>

>

>

일하고 있는: 필터 부분은 각 하위 목록의 항목을 가져와 소스 목록에 있는지 확인합니다. 목록 이해는 list2의 각 하위 목록에 대해 실행됩니다.
산출:

[[13, 32], [7, 13, 28], [1, 6]]>

방법 6: Reduce() 사용:
연산:

  1. functools 모듈에서 축소 기능을 가져옵니다.
  2. 두 개의 목록을 정의합니다.
  3. 빈 목록으로 변수 교차를 초기화합니다.
  4. lst1의 요소를 반복하려면 축소 함수를 사용하십시오.
  5. 람다 함수 내에서 현재 요소가 lst2에 있고 교차 목록에는 아직 없는지 확인합니다.
  6. 그렇다면 현재 요소를 교차 목록에 추가하십시오.
  7. 교차점 목록을 반환합니다.
  8. 교차점 목록을 인쇄합니다.

파이썬3




from> functools>import> reduce> lst1>=> [>15>,>9>,>10>,>56>,>23>,>78>,>5>,>4>,>9>]> lst2>=> [>9>,>4>,>5>,>36>,>47>,>26>,>10>,>45>,>87>]> intersection>=> reduce>(>lambda> acc, x: acc>+> [x]>if> x>in> lst2>and> x>not> in> acc>else> acc, lst1, [])> print>(intersection)> #This code is contributed by Rayudu.>

>

>

산출

[9, 10, 5, 4]>

시간 복잡도: O(n^2), 여기서 n은 lst1의 길이입니다.
공간 복잡도: O(n), 여기서 n은 lst1의 길이입니다.