상세 컨텐츠

본문 제목

[파이썬(Python)] #22. for문 / enumerate 내장함수사용

python

by 빨간눈동자 2021. 8. 20. 14:08

본문

반응형

for문을 사용하여 아래와 같이 리스트 요소를 출력할 수 있다.  

# test.py

a = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
for i in a :
    print(i)

 

만약 요소 값과 함께 index 값도 함께 출력하고 싶다면 어떻게 해야할까?

c나 c++ 라면 아래와 같이 구현할 수 있다. 

b = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
for i in range(len(b)):
    print(f'{i} {b[i]}')

 

하지만, python에서는 enumerate() 함수를 지원해서 이를 보다 쉽게 구현할 수 있다. 

enumerate( 반복가능한 객체, start = N ) 형태를 가지며, 

start 옵션은 index의 시작을 나타낸다. 즉, 아래와 같이 start = 1을 하게 되면, indexing을 1부터 시작하게 된다. 

c = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
for i, j in enumerate(c, start=1):
    print(f'{i} {j}')

 

for in for in 구문

아래 예제를 살펴 보자 

import sys

def main(argv):
    a = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

    b = [m for d in a for m in d]
    print(b)

    c = []
    for d in a:
        for m in d:
            c.append(m)
    print(c)

if __name__ == "__main__":
    main(sys.argv)

 

print(b) 와 print(c)의 결과가 동일한 것을 볼 수 있다. 

 

b = [m for d in a for m in d]

위와 같이 for __ in __ for __ in __ 형태가 나온다면 아래와 같이 해석하면 될 듯 한다. 

 

for __ in __ for __ in __ : 붉은 색 부분 먼저 해석하고 이후 파란색 부분을 해석한다. 

 

즉, "for d in a" 를 먼저 실행하면 a에 있는 값을 d로 꺼내오고, "for m in d" 다시 d에 있는 값을 순차적으로 m으로 꺼낸다. 

이를 리스트 형태로 만들어 준다  ( list comprehension : https://answer-me.tistory.com/7 )

 

반응형

관련글 더보기