콘텐츠로 건너뛰기

파이썬 in 연산자 사용하기

CodeMDD.io

실제 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

이와 같은 함수를 사용하면 다음과 같이 회원 여부를 확인할 수 있습니다.

>>> values = [1, 2, 3, 4, 5]
>>> is_member(3, values)
True
>>> is_member(6, values)
False

is_member() 함수는 값을 iterable의 값과 비교하여 해당 값이 iterable에 속하는지 여부를 확인합니다. 값이 iterable에 속하는 경우 True를 반환하고, 속하지 않는 경우 False를 반환합니다.

이 방법은 기본적으로 동작하지만, Python은 innot in 연산자를 제공하여 더 간결하고 직관적인 방법으로 회원 검사를 수행할 수 있도록 합니다. 다음 섹션에서는 이러한 연산자에 대해 자세히 알아보겠습니다.

Python의 in 연산자

Python의 in 연산자는 해당 값을 컬렉션에 찾는 데 사용됩니다. 다음과 같은 문법으로 사용됩니다.

value in collection

value는 비교할 값이고, collection은 값을 포함하는 컬렉션입니다. in 연산자는 valuecollection에 속하는지 여부에 따라 불린(Boolean) 값을 반환합니다. 값이 컬렉션에 속하는 경우 True를 반환하고, 속하지 않는 경우 False를 반환합니다.

다음은 이 연산자의 사용 예시입니다.

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

in 연산자를 사용하면 명시적인 반복문 없이도 값의 컬렉션에 대한 회원 검사를 쉽게 수행할 수 있습니다. 직관적이고 간결한 구문을 제공하여 읽기 쉽고 이해하기 쉬운 코드를 작성할 수 있습니다.

Python의 not in 연산자

Python의 not in 연산자는 in 연산자와 반대로 작동합니다. valuecollection에 속하지 않는지 여부에 따라 불린 값을 반환합니다. 다음과 같은 문법으로 사용됩니다.

value not in collection

value는 비교할 값이고, collection은 값을 포함하는 컬렉션입니다. not in 연산자는 valuecollection에 속하지 않는 경우 True를 반환하고, 속하는 경우 False를 반환합니다.

다음은 not in 연산자의 사용 예시입니다.

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

not in 연산자는 in 연산자와 마찬가지로 읽기 쉽고 간결한 구문을 제공하여 코드를 더 명확하고 이해하기 쉽게 만듭니다.

Different Python Types에서 innot in 사용하기

이제 innot in 연산자를 다른 Python 데이터 유형과 함께 사용하는 방법에 대해 알아보겠습니다. 이를 통해 회원 검사를 수행할 수 있는 다양한 유형의 데이터를 다룰 수 있습니다.

리스트, 튜플 및 Range

innot in 연산자는 리스트, 튜플 및 range와 같은 순차적인 데이터 유형에 대해 자동으로 작동합니다. 다음의 예시를 살펴봅시다.

>>> values_list = [1, 2, 3, 4, 5]
>>> 3 in values_list
True
>>> 6 in values_list
False
>>> values_tuple = (1, 2, 3, 4, 5)
>>> 3 in values_tuple
True
>>> 6 in values_tuple
False
>>> values_range = range(1, 6)
>>> 3 in values_range
True
>>> 6 in values_range
False

innot in 연산자는 주어진 값이 리스트, 튜플 또는 range에 있는지 여부를 확인합니다. 값이 해당 데이터 유형에 속하는 경우 True를 반환하고, 속하지 않는 경우 False를 반환합니다.

문자열

문자열은 순차적인 데이터 유형으로 간주될 수 있습니다. 따라서 innot in 연산자는 문자열에서도 작동합니다. 다음의 예시를 살펴봅시다.

>>> hello = "Hello, World!"
>>> "Hello" in hello
True
>>> "Python" in hello
False

innot in 연산자를 사용하여 문자열에서 해당 문자열이 존재하는지 여부를 쉽게 확인할 수 있습니다.

생성기

파이썬에서 생성기는 순차적인 데이터를 생성하는 데 사용되는 용어입니다. 생성기가 만들어낸 데이터는 innot in 연산자와 함께 사용할 수 있습니다. 다음의 예시를 살펴봅시다.

>>> numbers = (number for number in range(5))
>>> 2 in numbers
True
>>> 6 in numbers
False

생성기를 사용하여 생성된 순차적인 데이터를 검사할 때에도 innot in 연산자를 적용할 수 있습니다.

사전 및 세트

innot in 연산자는 사전과 세트와 같은 해시 가능한 데이터 유형에 대해서도 작동합니다. 다음의 예시를 살펴봅시다.

>>> person = {"name": "Alice", "age": 25, "country": "USA"}
>>> "name" in person
True
>>> "city" in person
False
>>> fruits = {"apple", "banana", "cherry"}
>>> "apple" in fruits
True
>>> "grape" in fruits
False

사전과 세트에서도 innot in 연산자를 사용하여 해당 키 또는 값이 있는지 여부를 확인할 수 있습니다.

위의 예시에서 볼 수 있듯이, innot in 연산자는 다양한 Python 데이터 유형에서 동일한 방식으로 작동합니다. 이로써 여러분은 다양한 유형의 데이터에 대한 회원 검사를 손쉽게 수행할 수 있습니다.

Python의 innot in 연산자를 실제로 사용하기

이제 innot in 연산자를 실제로 사용하여 더 복잡한 예시를 살펴보겠습니다. 이를 통해 이러한 연산자를 적절하게 활용하는 방법을 이해할 수 있습니다.

Chained or 연산자 대체하기

일반적인 경우, innot in 연산자는 여러 비교를 체인으로 연결하는 것보다 더 간결하고 가독성이 좋은 해결책을 제공할 수 있습니다. 다음의 예시를 살펴봅시다.

>>> values = [1, 2, 3, 4, 5]
>>> if 3 in values or 4 in values:
... print("Found!")
...
Found!
>>> if 6 not in values and 7 not in values:
... print("Not found!")
...
Not found!

innot in 연산자를 사용하면 여러 비교를 체인으로 연결하는 대신 간결하고 명확한 조건문을 작성할 수 있습니다. 이를 통해 코드를 더 이해하기 쉽게 만들고 중복을 방지할 수 있습니다.

효율적인 회원 검사 작성

대부분의 경우, innot in 연산자를 사용하여 간단하고 효율적인 회원 검사를 직접 작성할 수 있습니다. 다음의 예시를 살펴봅시다.

>>> values = [1, 2, 3, 4, 5]
>>> if any(value == 3 for value in values):
... print("Found!")
...
Found!
>>> if not any(value == 6 for value in values):
... print("Not found!")
...
Not found!

any() 함수를 사용하여 회원 검사를 직접 작성할 수 있습니다. any() 함수는 제너레이터 표현식을 인수로 받아 그 중 하나라도 True인 경우 True를 반환합니다. 이를 통해 간단하고 지능적인 검사를 작성할 수 있습니다.

Membership Tests를 위한 operator.contains() 사용하기

Python은 operator 모듈을 통해 in 연산자와 동일한 동작을 수행하는 contains() 함수를 제공합니다. 이 함수는 실제로 in 연산자를 사용하는 것과 동일한 결과를 생성합니다. 다음의 예시를 살펴봅시다.

>>> import operator
>>> values = [1, 2, 3, 4, 5]
>>> operator.contains(values, 3)
True
>>> operator.contains(values, 6)
False

operator.contains() 함수는 in 연산자와 동일한 검사를 수행하지만, 함수로서 호출됩니다. 이를 통해 in 연산자의 동작을 검사하는 또 다른 방법을 제공합니다.

사용자 정의 클래스에서의 회원 검사 지원하기

일부 경우에는 사용자가 직접 작성한 클래스에서 innot in 연산자를 사용하여 회원 검사를 수행해야 할 수도 있습니다. 이를 위해서는 클래스에 __contains__() 메서드를 구현해야 합니다. __contains__() 메서드는 in 연산자와 동일한 동작을 구현하는 특수 메서드입니다. 다음의 예시를 살펴봅시다.

class CustomContainer:
def __init__(self, values):
self.values = values
def __contains__(self, value):
return value in self.values
container = CustomContainer([1, 2, 3, 4, 5])
if 3 in container:
print("Found!")

위의 예시에서는 CustomContainer라는 사용자 정의 클래스에서 __contains__() 메서드를 구현하여 in 연산자의 동작을 재정의합니다. 이제 CustomContainer 인스턴스에 in 연산자를 사용하여 회원 검사를 수행할 수 있습니다.

결론

Python의 innot in 연산자를 사용하면 손쉽게 회원 검사를 수행할 수 있습니다. 이 연산자는 다양한 Python 데이터 유형과 함께 사용할 수 있으며, 읽기 쉽고 간결한 구문을 제공하여 코드를 더 이해하기 쉽게 만들어줍니다. 또한 operator.contains() 함수를 사용하여 in 연산자와 동일한 작업을 수행할 수도 있으며, 사용자가 작성한 클래스에서도 innot in 연산자를 지원할 수 있습니다. 이러한 기능을 활용하여 효율적이고 가독성이 좋은 코드를 작성할 수 있습니다.