콘텐츠로 건너뛰기

파이썬은 어떻게 사용하고 고칠 수 있을까요?

CodeMDD.io

“in” 연산자와 “not in” 연산자: 멤버십 확인하기

Python의 “in” 연산자와 “not in” 연산자를 사용하여 주어진 값이 컬렉션에 속하는지 아닌지를 빠르게 확인할 수 있습니다. 이러한 종류의 확인은 프로그래밍에서 흔하게 사용되며, Python에서는 주로 “멤버십 테스트”로 알려져 있습니다. 따라서 이러한 연산자들은 “멤버십 연산자”로 알려져 있습니다.

이 튜토리얼에서 당신은 다음을 배울 것입니다:

  • innot in 연산자를 사용하여 멤버십 테스트 수행하기
  • innot in을 다른 데이터 유형과 함께 사용하기
  • in 연산자의 동등한 함수operator.contains() 사용하기
  • 자체 클래스에서 innot in을 지원하기

Python에서 멤버십 테스트 시작하기

가끔은 주어진 값이 값의 컬렉션에 있는지 여부를 확인해야 합니다. 다시 말해, 주어진 값이 값들의 “멤버”인지 아닌지를 확인해야 합니다. 이러한 종류의 확인은 일반적으로 멤버십 테스트로 알려져 있습니다.

다음과 같은 is_member() 함수를 살펴보십시오:

def is_member(value, iterable):
for item in iterable:
if value is item or value == item:
return True
return False
>>> is_member(2, [1, 2, 3, 4])
True
>>> is_member(5, [1, 2, 3, 4])
False

위의 예시에서 is_member() 함수는 대상 값이 주어진 컬렉션에 속하는지 확인하기 위해 in 연산자를 사용하고 있습니다. 이는 유용한 방법이지만, 파이썬은 innot in 연산자를 제공하여 이러한 작업을 좀 더 간단하게 수행할 수 있습니다.

”in” 연산자 사용하기

Python에서 “in” 연산자는 특정 값이 컬렉션에 속하는지를 확인하는 데 사용됩니다. “in” 연산자는 다음과 같은 구문을 가지고 있습니다:

value in collection

여기서 value는 확인할 값이고 collection은 값의 컬렉션입니다.

아래 예제를 살펴보십시오:

>>> 2 in [1, 2, 3, 4]
True
>>> 5 in [1, 2, 3, 4]
False

위의 예시에서 알 수 있듯이 “in” 연산자를 사용하여 컬렉션 안에 주어진 값이 있는지를 빠르게 확인할 수 있습니다. 결과는 참(True) 또는 거짓(False)으로 반환됩니다.

”not in” 연산자 사용하기

”not in” 연산자는 “in” 연산자와는 반대로, 주어진 값이 컬렉션에 속하지 않는지를 확인하는 데 사용됩니다. “not in” 연산자는 다음과 같은 구문을 가지고 있습니다:

value not in collection

위와 마찬가지로, value는 확인할 값이고 collection은 값의 컬렉션입니다.

아래 예제를 살펴보십시오:

>>> 2 not in [1, 2, 3, 4]
False
>>> 5 not in [1, 2, 3, 4]
True

위의 예시에서 “not in” 연산자를 사용하여 컬렉션 안에 주어진 값이 없는지를 빠르게 확인할 수 있습니다. 결과는 참(True) 또는 거짓(False)으로 반환됩니다.

다양한 Python 유형에서 “in” 및 “not in” 사용하기

”in”과 “not in” 연산자는 다양한 Python 유형과 함께 사용할 수 있습니다. 각 유형에 대해 사용되는 방법을 자세히 알아보겠습니다.

리스트, 튜플, 및 범위

”in”과 “not in” 연산자는 리스트, 튜플 및 범위와 함께 사용하여 주어진 값이 해당 컬렉션에 속하는지를 확인할 수 있습니다. 다음은 그 예시입니다:

>>> 2 in [1, 2, 3, 4]
True
>>> 'a' in ('a', 'b', 'c')
True
>>> 3 in range(5)
True

위의 예시에서, “in”과 “not in” 연산자는 각각 리스트, 튜플 및 범위 안에 주어진 값이 있는지를 확인합니다.

문자열

”in”과 “not in” 연산자는 문자열에서도 사용할 수 있습니다. 다음은 문자열에서 “in” 연산자를 사용한 예시입니다:

>>> 'a' in 'hello'
True
>>> 'x' in 'hello'
False

위의 예시에서, “in” 연산자는 문자열 ‘hello’ 안에 해당 문자가 있는지를 확인합니다.

생성기

”in”과 “not in” 연산자는 생성기와 함께 사용할 수도 있습니다. 생성기는 값을 생성하는데 사용되는 Python의 강력한 도구입니다. 다음은 “in” 연산자를 사용한 생성기의 예시입니다:

>>> 2 in (x for x in range(5))
True
>>> 'a' in (x for x in ['a', 'b', 'c'])
True

위의 예시에서, “in” 연산자는 생성기에서 생성되는 값 중 주어진 값이 있는지를 확인합니다.

사전 및 집합

사전과 집합은 Python에서 유용한 데이터 구조입니다. “in” 연산자와 “not in” 연산자 모두 사전 및 집합 유형과 함께 사용할 수 있습니다. 다음은 그 예시입니다:

>>> 'name' in {'name': 'John', 'age': 30}
True
>>> 2 in {1, 2, 3, 4}
True

위의 예시에서, “in” 연산자는 사전과 집합 안에 주어진 값이 있는지를 확인합니다.

”in”과 “not in” 연산자 활용하기

”in”과 “not in” 연산자를 사용하여 다양한 작업을 수행할 수 있습니다.

연속된 또는 연결된 “or” 연산자 대체하기

여러 개의 “or” 연산자를 사용하여 주어진 값이 컬렉션 안에 있는지 확인하는 것은 번거롭고 가독성이 떨어질 수 있습니다. 이 경우 “in” 연산자를 사용하여 코드를 간결하게 작성할 수 있습니다. 다음은 예시입니다:

>>> value = 2
>>> value == 1 or value == 2 or value == 3
True
>>> value in [1, 2, 3]
True

위의 예시에서, “in” 연산자를 사용하여 여러 개의 “or” 연산자를 대체할 수 있습니다.

효율적인 멤버십 테스트 작성하기

컬렉션의 크기가 큰 경우, “in”과 “not in” 연산자를 사용하여 효과적인 멤버십 테스트를 작성할 수 있습니다. 이는 반복문을 사용하는 것보다 더 효율적입니다. 또한 컬렉션에 대한 반복문을 작성하는 것에 비해 코드를 더 간단하게 유지할 수 있습니다. 다음은 예시입니다:

>>> value = 100
>>> collection = range(100000)
>>> value in collection
True

위의 예시에서, “in” 연산자는 컬렉션 안에 주어진 값이 있는지 확인합니다. 이를 통해 효과적인 멤버십 테스트를 수행할 수 있습니다.

Membership 테스트에 operator.contains() 사용하기

Python에는 operator.contains() 함수라는 “in” 연산자의 동등한 기능을 수행하는 함수가 있습니다. 이 함수는 in 연산자를 사용하여 멤버십 테스트를 보다 유용하게 만들어 줍니다. 예시를 살펴보십시오:

>>> import operator
>>> operator.contains([1, 2, 3], 2)
True
>>> operator.contains('hello', 'a')
True

위의 예시에서 operator.contains() 함수를 사용하여 컬렉션에 주어진 값이 있는지를 확인할 수 있습니다.

사용자 정의 클래스에서 멤버십 테스트 지원하기

Python에서는 사용자 정의 클래스에 대해 innot in 연산자를 지원할 수 있습니다. 이를 위해서는 클래스에 __contains__() 메서드를 구현해야 합니다. __contains__() 메서드는 멤버십 테스트를 수행하고 True 또는 False를 반환해야 합니다. 다음은 예시입니다:

class MyClass:
def __init__(self, values):
self.values = values
def __contains__(self, item):
return item in self.values
my_instance = MyClass([1, 2, 3])
print(2 in my_instance) # True
print(5 in my_instance) # False

위의 예시에서, MyClass는 사용자 정의 클래스입니다. __contains__() 메서드를 구현하여 해당 클래스의 인스턴스가 innot in 연산자를 지원하게 만듭니다.

결론

Python의 “in” 및 “not in” 연산자를 사용하면 주어진 값이 컬렉션에 속하는지 아닌지를 빠르게 확인할 수 있습니다. 이를 통해 코드를 더 간결하게 작성하고 멤버십 테스트를 더 효율적으로 수행할 수 있습니다. 또한 operator.contains() 함수를 사용하면 더욱 편리하게 멤버십 테스트를 수행할 수 있습니다. 마지막으로, 사용자 정의 클래스에서 innot in 연산자를 지원하기 위해 __contains__() 메서드를 구현할 수 있습니다.

Python의 “in” 및 “not in” 연산자를 활용하여 멤버십 테스트를 효과적으로 수행해 보세요!