Python
파이썬 리스트 차집합 연산
라이언(Ryan)
2020. 7. 7. 05:43
반응형
출처 : 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를 집합으로 설정하여 (리스트로) 변환을 수행할 필요가 없습니다.
반응형