반응형
파이썬에서 어떻게 두 개의 고유하지 않고 순서가없는 목록을 뺄 수 있습니까? 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
반응형
'파이썬' 카테고리의 다른 글
파이썬 Square of each element of a column in pandas (0) | 2020.12.27 |
---|---|
파이썬 클래스 속성과 인스턴스 속성의 차이점은 무엇입니까? (0) | 2020.12.27 |
파이썬 csv 파일 스크래피에 쓰기 (0) | 2020.12.27 |
파이썬 List of IP addresses/hostnames from local network in Python (0) | 2020.12.27 |
파이썬 How to iterate over two dictionaries at once and get a result using values and keys from both (0) | 2020.12.27 |
댓글