
i = [300, 500, 100]
<pass>
print(i)
<pass> 부분에 리스트 내장함수 insert를 이용하여 코드를 입력하고 다음과 같이 출력하게 하세요.
또 다른 방법도 추가 해주세요.
출력
[300, 500, 1000, 100]
주어진 코드에 insert 함수를 사용하여 리스트에 1000을 추가하고, 다른 방법을 사용해 동일한 결과를 얻는 방법을 알려드릴게요.
insert() 함수를 이용한 방법
insert() 함수는 리스트의 특정 위치에 새로운 요소를 삽입합니다. 첫 번째 인자로는 요소를 삽입할 인덱스(위치)를, 두 번째 인자로는 삽입할 값을 입력합니다.
i = [300, 500, 100]
i.insert(2, 1000)
print(i)
코드 분석
- i = [300, 500, 100]:
- i라는 이름의 변수에 [300, 500, 100]이라는 리스트를 할당합니다.
- 리스트는 순서가 있는 데이터의 묶음으로, 각 요소에는 0부터 시작하는 **인덱스(index)**가 부여됩니다.
- 현재 리스트 i의 인덱스는 다음과 같습니다.
- 300은 인덱스 0
- 500은 인덱스 1
- 100은 인덱스 2
- i.insert(2, 1000):
- 이것은 i 리스트에 포함된 insert() 메서드를 호출하는 구문입니다.
- insert() 메서드는 두 개의 인자를 받습니다.
- 첫 번째 인자 2는 **삽입할 위치(인덱스)**를 의미합니다.
- 두 번째 인자 1000은 삽입할 값을 의미합니다.
- 이 코드는 i 리스트의 인덱스 2 위치에 1000을 삽입하라는 명령입니다.
- 원본 리스트 [300, 500, 100]에서 인덱스 2는 100이 있는 위치입니다. insert()는 기존의 요소를 덮어쓰지 않고, 그 위치에 새로운 요소를 끼워 넣은 후 그 뒤의 요소들을 한 칸씩 뒤로 밀어냅니다.
- 따라서 이 명령이 실행되면 리스트 i는 [300, 500, 1000, 100]으로 변경됩니다.
- print(i):
- 변경된 리스트 i의 내용을 화면에 출력합니다.
- 결과적으로 [300, 500, 1000, 100]이 출력됩니다.
다른 방법
insert() 함수 외에도 리스트에 요소를 추가하는 다양한 방법이 있습니다. 그중 하나인 append() 함수와 슬라이싱을 이용하는 방법을 보여드릴게요.
1. append()와 슬라이싱을 이용한 방법
append() 함수는 리스트의 마지막에 요소를 추가합니다. 리스트에 1000을 추가한 후, 슬라이싱을 이용해 리스트의 순서를 변경하여 원하는 출력 결과를 만들 수 있습니다.
i = [300, 500, 100]
i.append(1000)
i = i[:2] + [i[-1]] + i[2:-1]
print(i)
코드 분석
- i = [300, 500, 100]:
- i라는 변수에 [300, 500, 100] 리스트를 할당합니다.
- 이 리스트는 세 개의 정수 요소를 포함하고 있습니다.
- i.append(1000):
- append() 메서드는 리스트의 맨 끝에 새로운 요소를 추가합니다.
- 이 코드를 실행하면 i는 [300, 500, 100, 1000]으로 변경됩니다.
- 이제 리스트에는 네 개의 요소가 있습니다.
- i = i[:2] + [i[-1]] + i[2:-1]:
- 이 줄은 리스트 슬라이싱과 병합(+)을 사용하여 리스트의 순서를 재정렬합니다. 이 부분이 가장 복잡한 단계입니다.
- i[:2] : 리스트의 처음부터 인덱스 2 직전까지의 요소를 잘라냅니다. 즉, [300, 500]을 의미합니다.
- [i[-1]] : i[-1]은 리스트의 마지막 요소인 1000을 의미합니다. 이를 []로 감싸서 리스트 형태로 만듭니다. 즉, [1000]을 의미합니다.
- i[2:-1] : 리스트의 인덱스 2부터 마지막 요소 직전까지의 요소를 잘라냅니다. i의 현재 상태는 [300, 500, 100, 1000]이므로, 인덱스 2에 해당하는 100만 잘라냅니다. 즉, [100]을 의미합니다.
- 이 세 개의 슬라이스된 리스트([300, 500], [1000], [100])를 + 연산자로 합칩니다.
- [300, 500] + [1000] + [100]은 최종적으로 [300, 500, 1000, 100]이 됩니다. 이 새로운 리스트가 다시 i에 할당됩니다.
- print(i):
- 최종적으로 재정렬된 리스트 i의 내용을 출력합니다.
- 결과는 [300, 500, 1000, 100]이 됩니다.
이 코드는 insert(2, 1000)와 동일한 결과를 얻기 위해 append()와 복잡한 슬라이싱을 사용한 예제입니다. insert() 메서드를 사용하면 한 줄로 간단하게 해결할 수 있는 작업을 여러 단계에 걸쳐 수행한 것입니다.
2. 슬라이싱만 이용한 방법
insert() 함수처럼 리스트의 특정 위치에 값을 삽입하는 다른 방법으로 슬라이싱을 이용할 수 있습니다.
i = [300, 500, 100]
i[2:2] = [1000]
print(i)
코드 분석
- i = [300, 500, 100]:
- i라는 변수에 세 개의 요소를 가진 리스트 [300, 500, 100]를 할당합니다.
- 리스트의 각 요소는 인덱스 0, 1, 2를 가집니다.
- i[2:2] = [1000]:
- 이 줄은 **슬라이스 할당(slice assignment)**이라고 불리는 기법입니다.
- i[2:2]: 이것은 리스트 i에서 인덱스 2부터 인덱스 2까지의 **빈 슬라이스(empty slice)**를 나타냅니다. 즉, 아무것도 없는 위치를 가리킵니다.
- = [1000]: 이 빈 슬라이스 위치에 [1000]이라는 새로운 리스트를 할당하라는 명령입니다.
- 파이썬은 이 명령을 인덱스 2에 1000을 삽입하라는 의미로 해석합니다. 원래 인덱스 2에 있던 100과 그 뒤의 요소들은 자동으로 한 칸씩 뒤로 밀려납니다.
- 따라서 이 코드를 실행하면 i 리스트는 [300, 500, 1000, 100]으로 변경됩니다.
- print(i):
- 변경된 i 리스트를 출력합니다.
- 결과는 [300, 500, 1000, 100]이 됩니다.
insert() 메서드가 리스트에 요소를 삽입하기 위해 명시적으로 만들어진 함수라면, 슬라이스 할당은 리스트의 특정 부분을 다른 리스트로 교체하는 기능입니다. 이 코드처럼 빈 슬라이스에 요소를 할당하면 교체가 아닌 삽입의 효과를 낼 수 있어 매우 유용합니다.

'파이썬(문제풀이)' 카테고리의 다른 글
| 파이썬 별찍기 - 오른쪽으로 정렬된 직각삼각형 (0) | 2025.09.07 |
|---|---|
| 별찍기-직각삼각형 (0) | 2025.09.07 |
| 파이썬 문제풀이-1 (0) | 2025.09.05 |
| 문제를 통한 파이썬 공부 #28 (0) | 2023.01.29 |
| 문제를 통한 파이썬 공부 #27 (0) | 2023.01.28 |