스택큐힙리스트

어떻게 다른 목록에서 하나의 목록을 뺄 수 있나요? 본문

카테고리 없음

어떻게 다른 목록에서 하나의 목록을 뺄 수 있나요?

스택큐힙리스트 2023. 4. 22. 15:54
반응형

나는 목록 x과 y 사이의 difference를 가져 가고 싶어.

>>> x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> y = [1, 3, 5, 7, 9]

>>> x - y

# should return [0, 2, 4, 6, 8]

답변 1

x로부터 원래 order를 유지하면서 차이를 계산하는 리스트 내장을 사용하세요.

[item for item in x if item not in y]

리스트 속성(예: 순서)이 필요하지 않은 경우 set difference 를 사용하십시오. other answers 가 제안한 대로입니다.

list(set(x) - set(y))

&$#@#^!%^^$& 클래스에서 상속받은 클래스에서 __sub__을 무시하고 x - 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

답변 2

리스트에서 다른 리스트를 빼려면 어떻게 해야 할까요? 이 문제에 대해 SEO에 민감한 한국어 글을 작성해 봅시다.

파이썬에서는 리스트에 대한 다양한 연산을 지원합니다. 리스트를 다룰 때 가장 기본적인 연산 중 하나는 두 개의 리스트를 빼는 것입니다. 이번에는 리스트의 각 원소가 고유한 값이며, 두 리스트 간의 순서가 동일하다는 가정 하에 두 리스트를 뺄 수 있는 방법을 알아보겠습니다.

우선, 뺄셈을 수행하고자 하는 두 개의 리스트를 만듭니다. 예를 들어, 첫 번째 리스트는 [1, 2, 3, 4, 5], 두 번째 리스트는 [3, 4, 5, 6, 7]이라고 해 봅시다.

그 다음으로, 첫 번째 리스트에서 두 번째 리스트를 빼서 새로운 리스트를 만들어야 합니다. 이를 수행하기 위해 파이썬에서는 리스트 컴프리헨션을 사용하면 됩니다. 다음의 코드를 확인해 보세요.

```

a = [1, 2, 3, 4, 5]

b = [3, 4, 5, 6, 7]

result = [x for x in a if x not in b]

print(result)

```

위 코드를 실행하면 [1, 2]가 출력됩니다. 이유는 첫 번째 리스트의 원소 중에서 두 번째 리스트에도 존재하는 3, 4, 5를 제외한 나머지 원소인 1과 2만 남기 때문입니다.

이 방법은 원소의 순서를 유지하지 않기 때문에 원소의 순서가 중요한 경우에는 사용하기 어려울 수 있습니다. 그렇다면 원소의 순서를 유지하면서 리스트를 뺄셈하는 방법은 무엇일까요?

이 경우에는 set 타입을 사용해서 처리할 수 있습니다. 먼저, 두 리스트를 set으로 변환한 다음, 차집합 연산을 수행하면 됩니다. 다음의 코드를 확인해 보세요.

```

a = [1, 2, 3, 4, 5]

b = [3, 4, 5, 6, 7]

result = list(set(a) - set(b))

print(result)

```

위 코드를 실행하면 [1, 2]가 출력됩니다. 이유는 앞서 설명한 것과 같이 두 번째 리스트에 존재하는 3, 4, 5를 제외한 나머지 원소인 1과 2만 남기 때문입니다.

이처럼 파이썬에서는 다양한 방법으로 리스트를 빼는 연산을 수행할 수 있습니다. 적절한 방법을 선택해서 사용하면 됩니다.

반응형
Comments