<개인공부>/[Python]

[python] 파이썬 in, not in 포함 확인 연산

사용자 BlockDMask 2021. 6. 23. 00:30
반응형

안녕하세요. BlockDMask입니다.
오늘은 파이썬에서 포함, 불포함을 확인할 수 있는 in, not in 연산에 대해서 알아보려고 합니다.
다양한 곳에서 사용할 수 있는데요. 예제를 최대한 많이 들어보겠습니다.

<목차>
1. 파이썬 in 연산, not in 연산 설명
2. 파이썬 in, not in 연산 예제
  2-1) in 연산과 리스트
  2-2) in 연산과 튜플
  2-3) in 연산과 딕셔너리
  2-4) in 연산과 문자열 

 

 

1. 파이썬 in, not in 연산 설명


in, not in 연산자는 데이터 안에 찾고자 하는 것이 있는지 없는지 확인하는 연산자입니다.

in 연산자의 결과는 bool 타입이며
확인하고자 하는 데이터가 있는 경우 True, 없는 경우 False를 반환합니다.

반대로 not in 연산자는
확인하고자 하는 데이터가 있으면 False, 없으면 True를 반환합니다.

파이썬에서 in, not in을 사용하는 곳은 두 가지가 있습니다 간단하게 예시를 들어보겠습니다.

(1) 값이 있는지 확인 (리스트, 문자열, 튜플, 딕셔너리 등)

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

# if + True, False
if 1 in a:
    print("1 exist")
else:
    print("1 not exist")

# True, False
print(2 in a)

위와 같이 in 연산이 True, False를 반환하는 것을 이용해서 if 문을 통해서 리스트 안에 요소가 존재하는지 확인하는 로직을 작성할 수 있습니다.

두 번째 print(2 in a)를 보면 True를 반환하는 것도 볼 수 있습니다.

 

(2) 반복문에서 요소를 빼오는 데 사용

for 반복문에서 in을 사용하는 것은 위에서 값이 있는지 확인하는 in과는 조금 다릅니다.

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

for val in a:
    print(val)

for val in a를 보면 리스트 a에 있는 값들을 val에 하나하나 순서대로 옮겨서 사용하는 것을 볼 수 있습니다.

이 포스팅에서는 in의 첫 번째 사용인 값이 있는지 확인하는 방법에 대해서 좀 더 자세히 예제를 들어볼 예정입니다.
2번 예제로 넘어가 볼까요?

 

 

2. 파이썬 in 예제


2-1) 파이썬 in 리스트

arr = ['a', 'b', 'c', 'd', 'e', 'f']

print(f"'a' in arr : {'a' in arr}")
print(f"'a' not in arr : {'a' not in arr}")
print(f"'z' in arr : {'z' in arr}")
print(f"'z' not in arr : {'z' not in arr}")

if 'c' in arr:
    print("c is in arr")
else:
    print("c is not in arr")

리스트에서 in을 이용하면 요소가 있는지 없는지 확인할 수 있습니다.
결과를 보면 'a' in arr 은 True. 'a' not in arr이 False 가 잘 나오는 것을 볼 수 있습니다.
반대로 arr에 없는 'z'를 확인했을 때 'z' in arr은 False, 'z' not in arr은 True 가 잘 나옴을 볼 수 있습니다.

 

2-2) 파이썬 in 튜플

t = (1, 2, 3, 4, 5)

print(f"2 in t : {2 in t}")
print(f"2 not in t : {2 not in t}")
print(f"99 in t : {99 in t}")
print(f"99 not in t : {99 not in t}")


if 3 in t:
    print("3 in tuple : True")
else:
    print("3 in tuple : False")


if 3 not in t:
    print("3 not in tuple : True")
else:
    print("3 not in tuple : False")

튜플도 위에 리스트와 마찬가지로 튜플 앞에 in을 붙이고 확인하고자 하는 값을 집어넣어서 사용하면 됩니다.

 

2-3) 파이썬 in 딕셔너리

d = {"a": 123, "b": 456, "c": 789}

print(f"'a' in t : {'a' in d}")
print(f"'a' not in t : {'a' not in d}")
print(f"'z' in t : {'z' in d}")
print(f"'z' not in t : {'z' not in d}")

print(d.keys())
print(d.values())

# keys
if 'c' in d.keys():
    print("'c' in d.keys() : True")
else:
    print("'c' in d.keys() : False")


# values
if 456 in d.values():
    print("456 in d.values() : True")
else:
    print("456 in d.values() : False")

딕셔너리는 그대로 in 연산을 사용하면 key 값만 확인하게 됩니다.
'a' in d처럼 말이죠.

하지만 d.keys(), d.values()의 결과를 보면 리스트처럼 나오는 것을 볼 수 있습니다.
네, 맞습니다. 그렇기 때문에 value 들도 in 연산자이 가능하게 됩니다.

 d.keys()를 이용해서 명시적으로 키값 중에 'c'가 있는지 확인하는 예제를 만들어 보았고,
그 아래 d.values()를 이용해서 값들을 확인하는 방법에 대해서 예제를 만들어 보았습니다.

이런 식으로 딕셔너리에서 키, 벨류 모두 in 연산을 통해서 값이 있는지 확인할 수 있습니다.

 

2-4) 파이썬 in 문자열 (문자 포함 확인)

문자열에서 특정 문자 혹은 문자열이 포함되어있는지 확인을 할 때 in 연산을 쓸 수 있습니다.
반대로 포함되지 않는 것을 확인할 때 not in 연산을 사용하면 됩니다.

str = "BlockDMask"

# 전부 확인
if "BlockDMask" in str:
    print("'BlockDMask' in str : True")
else:
    print("'BlockDMask' in str : False")

# 일부만 확인
if "Mask" in str:
    print("'Mask' in str : True")
else:
    print("'Mask' in str : False")


# 대소문자 구분 확인
if "mask" in str:
    print("'mask' in str : True")
else:
    print("'mask' in str : False")


# 일부만 확인
if "z" not in str:
    print("'z' not in str : True")
else:
    print("'z' not in str : False")

# 일부만 확인
if "k" not in str:
    print("'k' not in str : True")
else:
    print("'k' not in str : False")

(1) 전체 문자열은 당연히 in으로 확인했을 때 True가 나오는 것을 확인할 수 있습니다.
(2) 번 예제를 보면 "BlockDMask" 문자열의 일부인 "Mask"만 in으로 체크했을 때도 True 가 나온 것을 확인할 수 있습니다.
(3) 번 예제를 보면 (2) 번과 동일한데 Mask의 대문자를 mask 소문자로 변경해서 체크했을 때 False 가 나온 것을 볼 수 있습니다.
이것으로 대소문자 구분을 한다는 것을 알 수 있습니다.
(4), (5) 번은 문자열의 not in 예제입니다.

 

이렇게 해서 파이썬 in 연산 , not in 연산에 대해서 알아보았습니다.
감사합니다.

반응형