일반적으로 i, j, k 를 index 로 사용하는 for 문을 사용해왔음
파이썬에서는 index 없이 enumerate 함수 사용해서 for 문 돌릴 수 있음
for 루프
# for <원소> in <목록>
for letter in ['A', 'B', 'C']
print(letter)
--> 여기서, 리스트의 원소 뿐만 아니라, 각 index에 접근하고 싶다면?
i = 0
for letter in ['A', 'B', 'C']
print(i,letter)
i += 1
or
letters = ['A', 'B', 'C']
for i in range(len(letters)):
letter = letters[i]
print(i, letter)
위의 코드들을 non-Pythonic 하다고 합니다.
enumerate() 함수
# for <원소> in enumerate(<목록>):
for entry in enumerate(['A','B','C']):
print(entry)
여기서, index와 원소를 각각 다른 변수에 할당하고 싶으면 인자 풀기, ie, Unpacking 필요
# for <원소> in enumerate(<목록>):
for i, letter in enumerate(['A','B','C']):
print(entry)
index의 시작을 1부터 하고 싶다면?
for i, letter in enumerate(['A', 'B', 'C'], start=1):
print(i, letter)
enumerate() 원리
# for문 작동 원리
iter_letters = iter(['A', 'B', 'C'])
print(next(iter_letters))
print(next(iter_letters))
print(next(iter_letters))
인자로 넘어온 목록을 기준으로, 인덱스와 원소에 차례로 접근하게 해주는 반복자 객체 반환(튜플)해주는 함수
[+] 2차원 리스트 루프
ex) 2차원 리스트나 튜플 속 데이터를 루프를 통해 접근해야 한다면?
matrix = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
for r in range(len(matrix)):
for c in range(len(matrix[r])):
print(r, c, matrix[r][c])
for r, row in enumerate(matrix):
for c, letter in enumerate(row):
print(r, c, letter)
'IT, DATA SCIENCE > Python' 카테고리의 다른 글
PGMS 코딩테스트 연습_분수의 덧셈 (0) | 2023.10.21 |
---|---|
프로그래머스_파이썬을 파이썬답게_파트1~파트4 (0) | 2023.09.02 |
파이썬 _ zip() 함수 (0) | 2023.09.02 |