본문 바로가기
파이썬

파이썬 Subtracting two lists in Python

by º기록 2020. 12. 27.
반응형

파이썬에서 어떻게 두 개의 고유하지 않고 순서가없는 목록을 뺄 수 있습니까? a = [0,1,2,1,0] b = [0, 1, 1] 이 있다고 가정 해 보겠습니다. c = a-b 이고 c [2, 0] 또는 [0, 2] 순서가 아닙니다. 나에게 중요합니다. a가 b의 모든 요소를 ​​포함하지 않는 경우 예외가 발생해야합니다.

이것은 집합과 다릅니다! 저는 a와 b의 요소 집합의 차이를 찾는 데 관심이없고 a와 b의 실제 요소 모음 간의 차이에 관심이 있습니다. .

for 루프를 사용하여 a에서 b의 첫 번째 요소를 찾은 다음 b와 a에서 요소를 제거하는 등의 작업을 수행 할 수 있습니다. 그러나 이것은 나에게 호소력이 없으며 매우 비효율적입니다 ( > O (n ^ 2) 시간) 동안 O (n log n) 시간 내에이 작업을 수행하는 것은 문제가되지 않습니다.

 

해결 방법

 


문서에 따르면 이와 같은 작업을 수행 할 수 있어야합니다.

from collections import Counter
a = Counter(0,1,2,1)
b = Counter(0,1,1)

print a - b  # ignores items in b missing in a

# check every element in a is in b
# a[key] returns 0 if key not in a, instead of raising an exception
assert all(a[key] > b[key] for key in b)

수정 :

2.5를 사용하고 있기 때문에 가져 오기를 시도하고 실패하면 자신의 버전을 정의 할 수 있습니다. 이렇게하면 사용 가능한 경우 최신 버전을 확보하고 그렇지 않은 경우 작동중인 버전으로 돌아갈 수 있습니다. 또한 향후 C 구현으로 변환 될 경우 속도 향상의 이점을 누릴 수 있습니다.

try:
   from collections import Counter
except ImportError:
    class Counter(dict):
       ...


 

참조 페이지 https://stackoverflow.com/questions/2070643

 

 

반응형

댓글