반응형
파이썬의 배열 필터?
예를 들어, 나는 두 개의 목록을 가지고 있습니다.
A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = [6, 9, 12]; # the subset of A
the result should be [7, 8, 10, 11]; the remaining elements
이를 위한 파이썬 내장 기능이 있습니까?
주문이 중요하지 않으면 다음을 사용해야 합니다.set.difference
그러나 질서를 유지하려면 간단한 목록 이해만 하면 됩니다.
result = [a for a in A if a not in subset_of_A]
편집: delnan이 말했듯이, 다음과 같은 경우 성능이 크게 향상될 것입니다.subset_of_A
실제set
회원 자격을 확인한 이후.set
목록의 O(n)와 비교하여 O(1)입니다.
A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = set([6, 9, 12]) # the subset of A
result = [a for a in A if a not in subset_of_A]
예, 기능:
filter(lambda x: x not in subset_of_A, A)
set(A)-set(subset_of_A)
원하는 결과 집합을 제공하지만 원래 순서는 유지되지 않습니다.다음은 질서 유지입니다.
[a for a in A if not a in subset_of_A]
아니요, 파이썬에는 이를 위한 내장 함수가 없습니다. 단순하게 다음과 같은 이유 때문입니다.
set(A)- set(subset_of_A)
답을 제공할 것입니다.
tuple(set([6, 7, 8, 9, 10, 11, 12]).difference([6, 9, 12]))
어때.
set(A).difference(subset_of_A)
며칠 전에 문의한 내용입니다(그러나 찾을 수 없습니다).
>>> A = [6, 7, 8, 9, 10, 11, 12]
>>> subset_of_A = set([6, 9, 12])
>>> [i for i in A if i not in subset_of_A]
[7, 8, 10, 11]
사용하는 것이 더 나을 수 있습니다.set
상황에 따라 처음부터 s.그런 다음 다른 답변과 같이 설정 작업을 사용할 수 있습니다.
그러나 이러한 작업에 대해서만 목록을 세트로 변환하고 다시 변환하는 것은 목록 이해보다 느립니다.
사용Set
유형:
A_set = Set([6,7,8,9,10,11,12])
subset_of_A_set = Set([6,9,12])
result = A_set - subset_of_A_set
>>> a = set([6, 7, 8, 9, 10, 11, 12])
>>> sub_a = set([6, 9, 12])
>>> a - sub_a
set([8, 10, 11, 7])
>>> A = [6, 7, 8, 9, 10, 11, 12]
>>> subset_of_A = [6, 9, 12];
>>> set(A) - set(subset_of_A)
set([8, 10, 11, 7])
>>>
언급URL : https://stackoverflow.com/questions/5640630/array-filter-in-python
반응형
'itsource' 카테고리의 다른 글
저장 프로시저에서 권한을 찾기 위한 오라클 쿼리 (0) | 2023.07.31 |
---|---|
Cordova 명령줄 인터페이스를 사용하여 서명된 APK 파일을 만드는 방법은 무엇입니까? (0) | 2023.07.31 |
문자열을 분할하여 변수에 할당하는 방법 (0) | 2023.07.26 |
SHOW TABLES를 사용하여 뷰가 아닌 테이블만 가져오는 방법은 무엇입니까? (0) | 2023.07.26 |
Spring MVC: @RequestParam과 @ModelAttribute의 차이점을 설명하십시오. (0) | 2023.07.26 |