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}')
아래 예제를 살펴 보자
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 )
[파이썬(Python)] #24. with 구문 (0) | 2021.08.22 |
---|---|
[파이썬(Python)] #6. list comprehension (0) | 2021.08.22 |
[파이썬(Python)] #21. 멀티프로세싱 ( multiprocessing ) (0) | 2021.08.20 |
[파이썬(Python)] #20. thread (0) | 2021.08.20 |
[파이썬(Python)] #16. 문자열/숫자 - 배열 입력받기 (0) | 2021.08.19 |