결론을 먼저 언급한다면)
append()나 insert() 같은 리스트 메서드를 사용하지 않고 리스트에 값을 넣으려면, 리스트를 선언할 때 미리 초기값을 할당해 주어야 합니다.
설명시작)
파이썬 프로그래밍 언어 내에서 가장 많이 쓰이는 구조인 리스트를 이용하면 많은 양의 데이터들을 한번에 모아 효율적으로 처리하고 저장할 수 있습니다.
기존의 변수는 오직 하나의 데이터를 저장하기 때문에 1,000명의 점수 데이터를 저장하기 위해서는 1,000개의 변수가 필요합니다.
하지만, 리스트는 오직 하나의 리스트 변수를 이용하여 1,000명의 점수 데이터를 효율적으로 저장하고 처리할 수 있습니다.
소스)
a=[10, 20, 30, 40]
a[0]=int(input('num1: '))
a[1]=int(input('num2: '))
a[2]=int(input('num3: '))
a[3]=int(input('num4: '))
hap=a[0]+a[1]+a[2]+a[3]
print('hap', hap)
결과)
num1: 10
num2: 20
num3: 30
num4: 40
hap 100
에서 a=[10, 20, 30, 40]은 a라는 리스트 변수에, 10,20,30,40 이라는 초기값으로 넣어준 이유
답변)
네, 맞습니다.
a = [10, 20, 30, 40]는 a라는 이름의 리스트 변수를 만들고, 그 안에 초기값으로 정수 10, 20, 30, 40을 할당하는 코드입니다.
이후에 나오는 코드 a[0] = int(input('num1: ')) 등은 사용자가 입력하는 값으로 리스트 a의 기존 초기값들을 덮어쓰게 됩니다.
추가질문)
a=[] 이렇게 비어있으면, 왜 에러가 출력되나요?
답변)
a = []와 같이 빈 리스트를 만들고, a[0] = 10처럼 바로 인덱스를 사용해 값을 할당하려 하면 에러가 발생합니다.
이는 리스트가 비어있기 때문에, a[0]이라는 인덱스 자체가 아직 존재하지 않아서 생기는 문제입니다. 리스트에 값을 추가하려면 다음과 같은 방법을 사용해야 합니다.
1. append() 메서드 사용
append()는 리스트의 맨 뒤에 요소를 추가하는 가장 일반적인 방법입니다.
a = []
a.append(10) # a는 이제 [10]이 됩니다.
a.append(20) # a는 이제 [10, 20]이 됩니다.
print(a)
2. insert() 메서드 사용
insert()는 특정 **위치(인덱스)**에 요소를 삽입하는 방법입니다.
a = [10, 30]
a.insert(1, 20) # 1번 인덱스에 20을 삽입합니다.
print(a) # 출력: [10, 20, 30]
3. 미리 초기값을 할당
가장 처음 질문하셨던 코드처럼, 아예 리스트를 만들 때부터 초기값을 정해주는 방법입니다. 이 경우에는 이미 인덱스가 존재하므로, a[0]과 같이 인덱스로 값을 변경할 수 있습니다.
a = [0, 0, 0, 0] # 4개의 초기값으로 리스트를 만듭니다.
a[0] = 10 # 0번 인덱스의 값을 10으로 변경합니다.
a[1] = 20 # 1번 인덱스의 값을 20으로 변경합니다.
print(a) # 출력: [10, 20, 0, 0]
중요 질문)
append, insert등을 사용하지 않는다면, 무조건 초기값을 넣어주어야 하나요?
답변)
네, 맞습니다. append()나 insert() 같은 리스트 메서드를 사용하지 않고 리스트에 값을 넣으려면, 리스트를 선언할 때 미리 초기값을 할당해 주어야 합니다.
리스트에 값을 추가하는 두 가지 주요 방법
파이썬에서 리스트에 값을 넣는 방법은 크게 두 가지로 나뉩니다.
- 초기값 할당: 리스트를 처음 만들 때부터 미리 값들을 넣어주는 방법입니다. 이 방법은 리스트의 크기가 정해져 있을 때 유용합니다.이 방식은 리스트의 크기가 고정되어 있고, 그 값만 변경하고 싶을 때 주로 사용됩니다.
-
Python
# 4개의 공간을 0으로 미리 채워 놓았습니다. a = [0, 0, 0, 0] # 이미 존재하는 인덱스에 접근해 값을 수정합니다. a[0] = 10 print(a) # 출력: [10, 0, 0, 0] - 동적 추가: append()나 insert()와 같은 메서드를 사용해 리스트가 비어 있거나 크기가 변할 때마다 값을 추가하는 방법입니다.이 방식은 리스트의 크기가 유동적일 때 아주 유용합니다.
-
Python
# 빈 리스트를 만들었습니다. a = [] # append()를 사용해 값을 하나씩 추가합니다. a.append(10) print(a) # 출력: [10]
만약 빈 리스트 a = []를 만들어 놓고 a[0] = 10과 같이 인덱스를 사용해 값을 할당하려 하면, IndexError: list assignment index out of range라는 에러가 발생합니다. 이 에러는 "존재하지 않는 인덱스에 접근했다"는 의미입니다. 빈 리스트에는 아직 0번 인덱스가 없기 때문이죠.

위 그림의 좌측처럼, 비어 있는 리스트에 존재하지 않는 인덱스로 값을 넣으려고 하면 IndexError가 발생합니다.
반면, 우측의 올바른 방법 두 가지를 사용하면 문제없이 값을 넣을 수 있습니다.
- append() 사용: 빈 리스트에 값을 하나씩 추가하여 리스트의 크기를 늘립니다.
초기값 할당: 리스트를 만들 때 미리 값을 넣어주어, 인덱스를 처음부터 존재하게 만듭니다.
'파이썬(Python)' 카테고리의 다른 글
| 파이썬 프로그램 종류 및 설명 (5) | 2025.08.13 |
|---|---|
| 파이썬 list()함수란? (1) | 2025.08.12 |
| 파이썬, 표준 출력 함수(콤마, %형식지정자, format()함수, f-string 함수) (6) | 2025.08.12 |
| 파이썬에서 다중할당(multiple assignment)에 대해 정리 (1) | 2025.08.12 |
| 파이썬의 버젼별 차이점 정리 (중요) (5) | 2025.08.12 |
콘텐츠 내 자동삽입광고
