파이썬 공부
들어가며
지금까지 우리는 변수, 연산자, 조건문, 반복문을 배우며 프로그래밍의 기초를 다졌습니다. 변수를 이용해 데이터를 저장하고, 반복문을 통해 여러 번의 작업을 자동화할 수 있게 되었죠.
하지만 만약 우리 반 학생 30명의 시험 점수를 다뤄야 한다면 어떨까요? score1, score2, score3, … 와 같이 30개의 변수를 만드는 것은 매우 비효율적입니다. 프로그래밍에서는 이처럼 여러 개의 연관된 데이터를 하나의 묶음으로 관리할 수 있는 방법을 제공하는데, 그중 가장 기본이 되는 것이 바로 리스트(List)입니다.
이번 글에서는 파이썬의 가장 기본적이면서도 강력한 데이터 구조인 리스트에 대해 알아보겠습니다.
리스트란 무엇일까?
리스트(List)는 여러 개의 값을 하나의 변수에 담을 수 있는 자료형입니다. 각각의 값은 ‘요소’라고 부르며, 순서대로 저장됩니다. 리스트는 [ ] (대괄호)로 만들고, 그 안에 값들을 쉼표(,)로 구분하여 넣어줍니다.
1
2
3
4
5
6
7
8
# 비어있는 리스트 생성
empty_list = []
# 여러 과일 이름을 담은 리스트 생성
fruits = ['사과', '바나나', '딸기']
# 숫자들을 담은 리스트 생성
numbers =
리스트 안에는 숫자, 문자열 등 다양한 종류의 데이터를 함께 담을 수도 있습니다.
리스트 다루기
리스트를 만들었다면 이제 그 안의 요소들을 사용해야 합니다. 특정 요소를 꺼내오거나, 값을 바꾸고, 새로운 요소를 추가하거나 삭제하는 방법을 알아보겠습니다.
1. 요소에 접근하기: 인덱싱(Indexing)
리스트의 각 요소에는 0부터 시작하는 고유한 번호가 매겨져 있는데, 이를 인덱스(Index)라고 합니다. 이 인덱스를 이용해 원하는 위치의 요소에 접근할 수 있습니다.
1
2
3
4
5
6
7
fruits = ['사과', '바나나', '딸기']
print(fruits) # 0번 인덱스(첫 번째) 요소 출력 -> '사과'
print(fruits) # 2번 인덱스(세 번째) 요소 출력 -> '딸기'
# 음수 인덱스를 사용하면 뒤에서부터 접근할 수 있습니다.
print(fruits[-1]) # 마지막 요소 출력 -> '딸기'
2. 일부만 잘라내기: 슬라이싱(Slicing)
때로는 리스트의 특정 범위에 있는 여러 요소를 한 번에 가져오고 싶을 때가 있습니다. 이를 슬라이싱(Slicing)이라고 합니다. 리스트[시작인덱스:끝인덱스] 형태로 사용하며, 끝 인덱스 바로 앞까지의 요소를 가져옵니다.
1
2
3
4
5
6
7
8
9
10
numbers =
# 1번 인덱스부터 4번 인덱스 '전'까지
print(numbers[1:4]) # ->
# 5번 인덱스부터 끝까지
print(numbers[5:]) # ->
# 처음부터 3번 인덱스 '전'까지
print(numbers[:3]) # ->
3. 요소 추가하고 삭제하기
리스트는 생성 후에도 자유롭게 요소를 추가하거나 삭제할 수 있습니다.
append(): 리스트의 맨 마지막에 요소를 추가합니다.insert(): 지정한 인덱스에 요소를 추가합니다.pop(): 특정 인덱스의 요소를 삭제하고, 그 값을 반환합니다. 인덱스를 지정하지 않으면 마지막 요소를 삭제합니다.remove(): 특정 값을 찾아서 삭제합니다. 만약 동일한 값이 여러 개 있다면 첫 번째 값만 삭제됩니다.del: 특정 인덱스의 요소를 완전히 삭제합니다.
1
2
3
4
5
6
7
8
9
10
11
12
numbers =
# 요소 추가
numbers.append(40) #
numbers.insert(1, 15) #
print("추가 후:", numbers)
# 요소 삭제
numbers.pop() # 마지막 요소 40 삭제 ->
numbers.remove(20) # 값 20을 찾아 삭제 ->
del numbers # 0번 인덱스 요소 10 삭제 ->
print("삭제 후:", numbers)
리스트와 반복문의 환상적인 조합
리스트의 진가는 반복문, 특히 for문과 만났을 때 드러납니다. for문을 이용하면 리스트에 있는 모든 요소를 처음부터 끝까지 하나씩 꺼내어 원하는 작업을 수행할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
scores =
total = 0
for score in scores:
print("학생 점수:", score)
total = total + score # 각 학생의 점수를 total에 누적
average = total / len(scores) # len() 함수는 리스트의 길이를 알려줍니다.
print("총점:", total)
print("평균:", average)
이처럼 리스트와 반복문을 함께 사용하면 많은 양의 데이터를 매우 효율적으로 처리할 수 있습니다.
마무리하며
이번 글에서는 여러 개의 데이터를 순서대로 담는 그릇인 리스트(List)에 대해 배웠습니다. 리스트를 만들고, 인덱싱과 슬라이싱을 통해 요소에 접근하며, append, remove 등으로 요소를 추가하고 삭제하는 방법을 익혔습니다. 무엇보다 for 반복문과 함께 사용하여 리스트의 모든 요소를 순회하는 강력한 활용법을 확인했습니다.
이제 우리는 여러 데이터를 묶어서 다룰 수 있게 되었습니다. 하지만 코드가 점점 길어지고 복잡해진다면 어떻게 정리하고 재사용할 수 있을까요? 다음 글에서는 코드의 재사용성을 높여주고 프로그램을 구조적으로 만들어주는 함수(Function)에 대해 알아보겠습니다.