Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 목록 목록에서 공통 요소 찾기

<시간/>

내부 요소도 목록인 목록을 가질 수 있습니다. 이러한 경우 내부 목록에서 공통 요소를 찾아야 할 필요가 있을 수 있습니다. 이 기사에서 우리는 이를 달성하기 위한 접근 방식을 찾을 것입니다.

지도 및 교차로 포함

교집합은 서로 다른 집합 간의 공통 요소를 찾는 간단한 수학적 개념입니다. Python에는 둘 이상의 집합 간의 유사성을 포함하는 집합을 반환하는 집합 메서드가 있습니다. 그래서 먼저 map 함수를 통해 목록의 요소를 집합으로 변환한 다음 이 변환된 모든 목록에 set 메서드를 적용합니다.

예시

listA = [['Mon', 3, 'Tue', 7,'Wed',4],['Thu', 5,'Fri',11,'Tue', 7],['Wed', 9, 'Tue', 7,'Wed',6]]

# Given list
print("Given list of lists : \n",listA)

# Applying intersection
res = list(set.intersection(*map(set, listA)))

# Result
print("The common elements among inners lists : ",res)

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

Given list of lists :
[['Mon', 3, 'Tue', 7, 'Wed', 4], ['Thu', 5, 'Fri', 11, 'Tue', 7], ['Wed', 9, 'Tue', 7, 'Wed', 6]]
The common elements among inners lists : ['Tue', 7]

감소 및 람다 사용

파이썬에서 reduce 함수를 적용할 수도 있습니다. 이 함수는 전달된 시퀀스에서 언급된 모든 목록 요소에 대한 인수로 전달된 주어진 함수를 적용하는 데 사용됩니다. 람다 함수는 집합이 적용된 후 각 중첩 목록을 반복하여 공통 요소를 찾습니다.

예시

from functools import reduce
listA = [['Mon', 3, 'Tue', 7,'Wed',4],['Thu', 5,'Fri',11,'Tue', 7],['Wed', 9, 'Tue', 7,'Wed',6]]

# Given list
print("Given list of lists : \n",listA)

# Applying reduce
res = list(reduce(lambda i, j: i & j, (set(n) for n in listA)))

# Result
print("The common elements among inners lists : ",res)

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

Given list of lists :
[['Mon', 3, 'Tue', 7, 'Wed', 4], ['Thu', 5, 'Fri', 11, 'Tue', 7], ['Wed', 9, 'Tue', 7, 'Wed', 6]]
The common elements among inners lists : ['Tue', 7]