반응형
출처 : https://stackoverflow.com/questions/3428536/python-list-subtraction-operation
파이썬 리스트 차집합 연산
저는 다음과 비슷하게 뭔가 하고 싶습니다.
>>> x = [1,2,3,4,5,6,7,8,9,0]
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> y = [1,3,5,7,9]
>>> y
[1, 3, 5, 7, 9]
>>> y - x # ([2,4,6,8,0]를 리턴해야 합니다.)
이 방법은 파이썬 리스트에서 지원되지 않습니다. 이를 할 수 있는 최고의 방법은 무엇입니까?
12개의 답변 중 2개의 답변만 추려냄
리스트 내포(comprehension)을 사용합니다.
[item for item in x if item not in y]
만약 -
중위 연산 문법을 사용하고 싶으면 다음처럼 할 수 있습니다.
class MyList(list):
def __init__(self, *args):
super(MyList, self).__init__(args)
def __sub__(self, other):
return self.__class__(*[item for item in self if item not in other])
다음처럼 사용할 수 있습니다.
x = MyList(1, 2, 3, 4)
y = MyList(2, 5, 2)
z = x - y
하지만 만약 리스트 속성이 절대적으로 필요하지 않다면(예시, 순서), 다른 답변처럼 set(집합)을 사용하는 것을 추천합니다.
set difference 를 사용합니다.
>>> z = list(set(x) - set(y))
>>> z
[0, 8, 2, 4, 6]
또는 x와 y를 집합으로 설정하여 (리스트로) 변환을 수행할 필요가 없습니다.
반응형
'Python' 카테고리의 다른 글
많은 좀비 프로세스를 이끄는 파이썬 멀티프로세싱 (0) | 2020.07.16 |
---|---|
request 오류를 발생하는 최고의 방법은? (0) | 2020.07.13 |
파이썬 소켓 수신 메소드에서 timeout을 정하는 방법? (0) | 2020.06.27 |
뉴욕 도시 시간을 어떻게 얻을 수 있습니까? (2) | 2020.06.23 |
assertRaises - unittest에서 오류 테스트 하기 (0) | 2020.06.15 |