Code › codeit-ai-sprint

리스트와 for 반복문 다시 보기

코드잇 AI 엔지니어 스프린트 pre-course에서 리스트와 for 반복문을 다시 정리한 기록

오늘은 pre-course 세 번째 강의인 프로그래밍과 데이터 in Python을 들으면서, 리스트와 for 반복문 쪽을 다시 봤다.

이전 강의가 파이썬 문법의 기본 감각을 맞추는 시간이었다면, 이번 강의는 데이터를 여러 개 다루기 시작하는 쪽에 가까웠다. 리스트를 만들고, 값을 꺼내고, 정렬하고, 리스트 함수를 쓰는 내용부터 for 반복문과 range 함수까지 이어졌다. 전체 강의 중 절반 정도를 지나온 상태라 아직 깊은 내용은 아니지만, 파이썬으로 데이터를 다루는 기본 모양이 조금씩 보이기 시작했다.

가장 먼저 다시 보게 된 건 리스트였다. 리스트 자체는 익숙한 자료구조지만, 파이썬에서는 문법이 가볍고 바로 손에 잡히는 편이라 실습하기 좋았다. 인덱스로 값을 꺼내고, 순서를 바꾸고, 함수를 활용해서 데이터를 다루는 흐름이 단순하게 이어졌다. 예전에 다른 언어에서 배열이나 컬렉션을 다룰 때와 큰 개념은 같지만, 파이썬은 그걸 꽤 짧은 문장으로 표현하게 해준다.

for 반복문도 비슷했다. 반복문이라는 개념은 새롭지 않지만, 파이썬에서는 리스트와 같이 쓰일 때 훨씬 자연스럽게 느껴진다. 값을 하나씩 꺼내서 처리하거나, range로 횟수를 만들고, 그걸 다시 리스트 문제에 적용하는 식이다.

이번 실습 중에서는 피타고라스 삼조와 리스트 뒤집기가 특히 재미있었다. 피타고라스 삼조는 처음 생각하면 a, b, c를 모두 반복문으로 돌리는 3중 for loop이 떠오르는데, 합이 정해져 있다면 c는 직접 반복하지 않아도 된다. 예를 들어 합이 400이라면 c = 400 - a - b로 구할 수 있고, 그러면 반복문 하나를 줄일 수 있다.

for a in range(1, 400):
    for b in range(a + 1, 400):
        c = 400 - a - b
        if a * a + b * b == c * c and a < b < c:
            print(a * b * c)

기초 문제여도 이런 식으로 생각하면 단순히 답을 맞히는 것보다 조금 더 재미있어진다. 불필요한 반복을 줄이는 감각은 나중에 알고리즘 문제를 풀 때도 계속 쓰이기 때문이다.

리스트 뒤집기도 마찬가지였다. 그냥 전체를 순서대로 바꾸는 게 아니라, 리스트의 절반 지점까지만 돌면서 양쪽 값을 swap하면 된다. 파이썬에서는 tuple unpacking으로 값을 바꿀 수 있어서 코드도 짧게 쓸 수 있다.

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

for i in range(len(numbers) // 2):
    j = len(numbers) - 1 - i
    numbers[i], numbers[j] = numbers[j], numbers[i]

이런 부분은 문법 자체보다 사고방식이 더 중요하게 느껴졌다. 리스트의 길이, 중간 지점, 바꿔야 하는 인덱스를 생각하고 나서야 코드가 자연스럽게 나온다. 이미 아는 개념이라도 손으로 직접 풀어보면 파이썬에서는 어떤 식으로 표현하는 게 편한지 다시 보게 된다.

AI 쪽으로 들어가면 결국 데이터는 계속 다루게 될 것이다. 입력 데이터든, 모델 응답이든, 로그든, 평가 결과든 여러 값을 묶고 반복해서 처리하는 일이 많을 수밖에 없다. 그래서 지금 보는 리스트와 반복문은 아주 기초지만, 나중에 복잡한 내용을 다룰 때 계속 밑에 깔리는 부분이라고 생각한다.

오늘 공부는 새로운 걸 많이 배웠다기보다, 파이썬으로 데이터를 다루는 손의 감각을 다시 맞춘 시간에 가까웠다. 남은 강의도 이런 식으로 하나씩 정리해두면, 본 과정에 들어갔을 때 적어도 문법 때문에 흐름이 끊기지는 않을 것 같다.