programming

파이썬 리스트 하나씩 출력하기, 리스트에 항목 있는지 체크하기


by Kitle · 2020. 07. 08.



items = [ 'John', 'Jack', 'Lee', 'Jenny']

오늘의 퀴즈는 list를 가지고 왔습니다.

퀴즈 조건

1) items 를 하나씩 출력해보시오. 

2) 값을 입력받아 입력된 값이 items에 포함되면 Yes,

    아니면 No를 출력하시오

   예) input : John

        출력 : Yes


풀이 1)

items = ['John', 'Jack', 'Lee', 'Jenny']
for item in items:
print(item)
my_input = input('input:')
if my_input in items:
    print('Yes')
else:
    print('No')


for문에 in을 사용하듯이 if문에도 in을 사용할 수 있습니다.

items 는 range처럼 순환가능한 객체로 사용할 수 있습니다.


[] 로 되는 자료구조를 파이썬에서는'리스트' 자료구조로 정정하고 있습니다.

c언어 같은 경우는 array(배열)로 쓰이는데 이런 차이가 있음을 주의해주세요.


list 자료구조는 for문처럼 iteration이 필요한 부분에 range대신 쓸 수 있습니다

거꾸로 순환가능한 객체가 없을 때 임의로 만드는게 range 입니다


풀이2

있다 없다 조건을 list의 in 으로 풀지 않고 .count(a)로 풀수도 있습니다.

items = [ 'John', 'Jack', 'Lee', 'Jenny']
a = input('input name:')
If items.count(a) > 0:
    print('yes')
else:
    print('no')

입력받은 값을 count하는 함수를 이용해 0보다 크면 있는 것이나 마찬가지이므로 결과는 올바르게 나올 것입니다.


보너스 퀴즈

지금은 포함하면 yes 지만 반대로 포함되지 않는다면? 어떻게 바꿔야 할까요?

if my_input in items:

# 만약 나의 입력이 items에 포함된다면을 바꾸면 되겠죠?

보너스 풀이

items = ['John', 'Jack', 'Lee', 'Jenny']
my_input = input('input:')
if my_input not in items:
    print('No')
else:
    print('Yes')


만약 나의 입력이 items에 포함되지 않는다면 이 부분을 else로 한 것 아니냐고 생각할 수 있겠지만, 요구사항이 바뀐다던지 더 쉽게 개발하기 위함이라든지, 또는 개발 상황에 따라 조건문을 반대로 써야 하는 경우도 생기죠.

포함되는지는 in 이고 포함안되는지는 not in 입니다. 굉장히 많이 쓰는 주요 문법입니다.

보너스로 A = True 라고 하고 print(not A)를 하면 논리부정으로 False 가 출력 됩니다. 파이썬 콘솔에서 확인하면 다음과 같습니다.

>>> A = True
>>> A
True
>>> not A
False