반응형
여러 목록에 포함 된 모든 값의 합집합을 만드는 Pythonic 방법
목록 목록이 있습니다.
lists = [[1,4,3,2,4], [4,5]]
이 목록을 병합하고 모든 중복 항목을 제거하고 싶습니다. 즉, 집합 결합 연산을 적용합니다.
desired_result = [1, 2, 3, 4, 5]
이를 수행하는 가장 쉬운 방법은 무엇입니까? (이 프로젝트에는 Python 2.4를 사용해야합니다.)
set.union
당신이 원하는 것을 :
>>> results_list = [[1,2,3], [1,2,4]]
>>> results_union = set().union(*results_list)
>>> print(results_union)
set([1, 2, 3, 4])
두 개 이상의 목록으로이 작업을 수행 할 수도 있습니다.
Python 2.5를 사용하는 것 같기 때문에 ( 현재 프로덕션 버전 인! = 2.6 버전에 대해 A가 필요하다면 Q에 언급하는 것이 좋을 것입니다 .-) 결과, 나는 추천한다 :
import itertools
...
return list(set(itertools.chain(*result_list)))
itertools 는 일반적으로 반복자 (그리고 많은 종류의 시퀀스 또는 컬렉션)와 함께 작업 할 수있는 좋은 방법이며 이에 익숙해 지길 진심으로 권장합니다. itertools.chain
특히 여기 에 문서화되어 있습니다 .
Union은 정렬 된 목록에서 지원되지 않지만 집합에서 지원됩니다. set.union을 확인하십시오 .
나는 다음을 사용하여 교차로를 만들었으므로 세트가 필요하지 않습니다.
a, b= [[1,2,3], [1,2]]
s = filter( lambda x: x in b, a)
또는,
s = [ x for x in b if x in a ]
이 스타일을 따를 수도 있습니다
In [12]: a = ['Orange and Banana', 'Orange Banana']
In [13]: b = ['Grapes', 'Orange Banana']
In [14]: c = ['Foobanana', 'Orange and Banana']
In [20]: list(set(a) | set(b) | set(c))
Out[20]: ['Orange and Banana', 'Foobanana', 'Orange Banana', 'Grapes']
In [21]: list(set(a) & set(b) | set(c))
Out[21]: ['Orange and Banana', 'Foobanana', 'Orange Banana']
desired_result = [x for y in lists for x in y]
반응형
'developer tip' 카테고리의 다른 글
Numpy의 0d 배열이 스칼라로 간주되지 않는 이유는 무엇입니까? (0) | 2020.11.27 |
---|---|
자식 푸시 후 로컬 실행 후크? (0) | 2020.11.27 |
document.write의 대안은 무엇입니까? (0) | 2020.11.27 |
PHP stdObject에서 첫 번째 요소 가져 오기 (0) | 2020.11.26 |
Amazon EC2에서 시간대를 설정하는 방법은 무엇입니까? (0) | 2020.11.26 |