IT & Programming/python

파이썬 리스트와 인덱스

오스카리 2025. 5. 10. 23:04

파이썬에서 리스트(list) 는 여러 개의 데이터를 순서대로 저장할 수 있는 가장 기본적이고 중요한 자료형입니다.
특히 인덱스를 활용한 데이터 접근은 리스트를 제대로 활용하기 위한 핵심 개념입니다.


1. 리스트란?

  • 여러 값을 하나의 변수에 저장할 수 있는 자료형
  • 대괄호 [] 사용
  • 다양한 자료형을 혼합해서 저장할 수 있음 (숫자, 문자열, 리스트 등)

예시:

fruits = ["사과", "바나나", "포도", "딸기"]

2. 인덱스란?

  • 리스트의 각 요소는 **순서(인덱스)**를 가지고 있음
  • 인덱스는 0부터 시작
  • 음수 인덱스를 사용하면 뒤에서부터 접근

예시:

print(fruits[0])   # "사과"
print(fruits[2])   # "포도"
print(fruits[-1])  # "딸기" (마지막 요소)

3. 인덱스를 활용한 수정, 추가, 삭제

수정

fruits[1] = "오렌지"
print(fruits)  # ['사과', '오렌지', '포도', '딸기']

추가 (append())

fruits.append("복숭아")
print(fruits)  # ['사과', '오렌지', '포도', '딸기', '복숭아']

삽입 (insert())

fruits.insert(2, "수박")
print(fruits)  # ['사과', '오렌지', '수박', '포도', '딸기', '복숭아']

삭제 (del, remove(), pop())

del fruits[3]          # 인덱스 기준 삭제
fruits.remove("사과")   # 값 기준 삭제
fruits.pop()           # 마지막 요소 제거

4. 인덱스를 활용한 반복문 처리

for i in range(len(fruits)):
    print(f"{i+1}번째 과일: {fruits[i]}")

또는 enumerate 사용:

for i, fruit in enumerate(fruits):
    print(f"{i}: {fruit}")

5. 슬라이싱(Slicing)

  • 인덱스를 활용해 리스트 일부를 잘라서 사용
  • 구문: 리스트[start:end:step]

예시:

numbers = [10, 20, 30, 40, 50]
print(numbers[1:4])      # [20, 30, 40]
print(numbers[:3])       # [10, 20, 30]
print(numbers[::2])      # [10, 30, 50]

6. 리스트 인덱스 예외

print(fruits[100])
# IndexError: list index out of range
  • 인덱스는 반드시 0 ≤ 인덱스 < len(리스트) 범위 내에서만 사용해야 함

정리

동작 문법 설명

접근 fruits[0] 첫 번째 요소 접근
수정 fruits[1] = "배" 두 번째 요소 수정
추가 fruits.append("귤") 끝에 추가
삭제 del fruits[2] 세 번째 요소 삭제
슬라이싱 fruits[1:3] 일부 요소 추출
반복 for i in range(len()) 인덱스로 반복

리스트와 인덱스는 파이썬에서 가장 자주 쓰이는 기본기 중 하나입니다.

 

 


1. 2차원 리스트

개념

  • 리스트 안에 또 다른 리스트가 들어있는 구조
  • 행(row)과 열(column)의 개념으로 활용 가능

예시:

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

인덱스 접근

print(matrix[0])      # [1, 2, 3] (1행)
print(matrix[1][2])   # 6 (2행 3열)

이중 반복문으로 출력

for row in matrix:
    for value in row:
        print(value, end=' ')
    print()
# 1 2 3
# 4 5 6
# 7 8 9

행, 열만 따로 접근하기

first_column = [row[0] for row in matrix]  # [1, 4, 7]

2. 리스트 컴프리헨션

개념

  • 기존 리스트나 범위를 바탕으로 간결한 문법으로 새 리스트 생성
  • 파이썬답고 직관적인 코드 작성 방식

기본 문법

[표현식 for 변수 in 반복가능객체]

예시:

squares = [x**2 for x in range(1, 6)]
print(squares)  # [1, 4, 9, 16, 25]

조건 추가

even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)  # [0, 2, 4, 6, 8]

중첩 리스트 컴프리헨션 (2차원 리스트 생성)

matrix = [[i * j for j in range(1, 4)] for i in range(1, 4)]
print(matrix)
# [
#   [1, 2, 3],
#   [2, 4, 6],
#   [3, 6, 9]
# ]

정리

유형 예시 설명

2차원 리스트 matrix[1][2] 행과 열 인덱스로 데이터 접근
단순 컴프리헨션 [x**2 for x in range(5)] 제곱 리스트 생성
조건 추가 [x for x in list if x>0] 필터링
중첩 컴프리헨션 [[i*j for j in ..] for i in ..] 표 형태 데이터 생성

실제 활용 예: 구구단 2단 ~ 4단 출력

table = [[f"{i} x {j} = {i*j}" for j in range(1, 10)] for i in range(2, 5)]
for row in table:
    print(" | ".join(row))

출력:

2 x 1 = 2 | 2 x 2 = 4 | ... | 2 x 9 = 18
3 x 1 = 3 | 3 x 2 = 6 | ... | 3 x 9 = 27
4 x 1 = 4 | 4 x 2 = 8 | ... | 4 x 9 = 36

원하신다면 리스트 실습용 연습 문제 또는 리스트를 활용한 미니 프로젝트(성적표, 장바구니 등)도 만들어드릴 수 있습니다. 만들어드릴까요?

반응형