파이썬 - 리스트
안녕하세요, 잠재력 있는 프로그래머 여러분! 오늘은 파이썬의惊奇한 세계, 리스트에 빠지러 가요. 여러분의 친절한 이웃 컴퓨터 과학 교사로서, 여러분을 이 여정을 안내하게 되어 기쁩니다. 기본부터 점진적으로 더 고급 개념까지 배우러 가겠습니다. 믿어주십시오, 이 튜토리얼을 끝내면 여러분은 프로처럼 리스트를 사용할 수 있을 거예요! ?
파이썬 리스트
파이썬의 리스트는 데이터 구조에서의 스위스Amy knife처럼 다양하고, 사용하기 쉽고, 강력합니다. 파티를 열고 초대한 손님들을 관리해야 하는 상황을 상상해봅시다. 그럴 때는 리스트가 완벽합니다!
첫 번째 리스트를 만들어 봅시다:
guests = ["Alice", "Bob", "Charlie", "David"]
print(guests)
이 코드를 실행하면 이렇게 보입니다:
['Alice', 'Bob', 'Charlie', 'David']
축하합니다! 여러분은 첫 번째 리스트를 만들었습니다. 하지만 정확히 무슨 일이 일어나고 있는 건가요?
파이썬의 리스트는 꺾쇠괄호 []
안에 아이템들이 들어있으며, 각 아이템은 쉼표로 구분됩니다. 이 아이템들은 문자열, 숫자, 심지어 다른 리스트도 될 수 있습니다!
다른 데이터 타입이 섞인 예제를 보겠습니다:
mixed_list = [42, "Hello", 3.14, True, [1, 2, 3]]
print(mixed_list)
출력:
[42, 'Hello', 3.14, True, [1, 2, 3]]
보시죠, 우리의 리스트에는 정수, 문자열, 실수, 불리언, 심지어 다른 리스트도 포함되어 있습니다!
리스트에서 값 접근
이제 우리는 손님 명단을 가지고 있습니다. 누가 오는지 확인하려면 어떻게 해야 하나요? 이 때 인덱싱이 유용합니다. 파이썬에서는 리스트 인덱싱이 0에서 시작됩니다. 따라서 첫 번째 아이템에 접근하려면 0번 인덱스를 사용합니다.
guests = ["Alice", "Bob", "Charlie", "David"]
print(guests[0]) # 첫 번째 손님
print(guests[2]) # 세 번째 손님
print(guests[-1]) # 마지막 손님
출력:
Alice
Charlie
David
-1을 사용하여 마지막 아이템에 접근했는데 눈치채셨나요? 음수 인덱싱은 리스트의 끝에서 시작합니다. 역순으로 카운팅하는 것과 같아요!
리스트 업데이트
이베가 초대를 놓쳤네요. 이제 그녀를 명단에 추가해봅시다:
guests = ["Alice", "Bob", "Charlie", "David"]
guests.append("Eve")
print(guests)
출력:
['Alice', 'Bob', 'Charlie', 'David', 'Eve']
append()
메서드는 아이템을 리스트의 끝에 추가합니다. 하지만 Eve를 Bob와 Charlie 사이에 추가하고 싶다면 어떻게 해야 하나요?
guests.insert(2, "Eve")
print(guests)
출력:
['Alice', 'Bob', 'Eve', 'Charlie', 'David', 'Eve']
이제 두 개의 Eve가 있네요! 다음 섹션에서 그런 문제를 해결해봅시다.
리스트 요소 제거
가끔씩 우리는 리스트에서 아이템을 제거해야 합니다. 지금은 추가된 Eve를 제거해봅시다:
guests = ['Alice', 'Bob', 'Eve', 'Charlie', 'David', 'Eve']
guests.remove("Eve")
print(guests)
출력:
['Alice', 'Bob', 'Charlie', 'David', 'Eve']
remove()
메서드는 지정된 아이템의 첫 번째 등장을 제거합니다. 인덱스를 알고 있다면 pop()
을 사용할 수 있습니다:
removed_guest = guests.pop(3)
print(f"{removed_guest}는 오지 못해요.")
print(guests)
출력:
David는 오지 못해요.
['Alice', 'Bob', 'Charlie', 'Eve']
파이썬 리스트 연산
파이썬의 리스트에는 흥미로운 기능이 많아요. 몇 가지를 탐험해봅시다:
# 연결
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined)
# 반복
repeated = [1, 2, 3] * 3
print(repeated)
# 길이
guests = ['Alice', 'Bob', 'Charlie', 'Eve']
print(len(guests))
출력:
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 1, 2, 3, 1, 2, 3]
4
인덱싱, 슬라이싱 및 행렬
각각의 아이템에 접근하는 방법을 기억하셨나요? 여러 아이템을 한 번에 가져오기 위해 슬라이싱을 사용할 수 있습니다:
guests = ['Alice', 'Bob', 'Charlie', 'David', 'Eve']
print(guests[1:4]) # 인덱스 1에서 시작하여 인덱스 4로 이동(포함하지 않음)
print(guests[:3]) # 시작부터 인덱스 3으로 이동(포함하지 않음)
print(guests[2:]) # 인덱스 2부터 끝까지
print(guests[::2]) # 각 두 번째 아이템
출력:
['Bob', 'Charlie', 'David']
['Alice', 'Bob', 'Charlie']
['Charlie', 'David', 'Eve']
['Alice', 'Charlie', 'Eve']
리스트는 2차원 리스트(2D 리스트)로서 행렬을 만들 수 있습니다:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix[1][1]) # 두 번째 행, 두 번째 열의 요소에 접근
출력:
5
파이썬 리스트 메서드
파이썬은 리스트에 대한 다양한 내장 메서드를 제공합니다. 몇 가지 공통적인 메서드를 표로 정리해보겠습니다:
메서드 | 설명 |
---|---|
append() | 리스트의 끝에 요소를 추가합니다 |
clear() | 리스트의 모든 요소를 제거합니다 |
copy() | 리스트의 복사본을 반환합니다 |
count() | 지정된 값의 요소의 수를 반환합니다 |
extend() | 현재 리스트의 끝에 다른 리스트의 요소를 추가합니다 |
index() | 지정된 값의 첫 번째 요소의 인덱스를 반환합니다 |
insert() | 지정된 위치에 요소를 추가합니다 |
pop() | 지정된 위치의 요소를 제거하고 반환합니다 |
remove() | 지정된 값의 첫 번째 요소를 제거합니다 |
reverse() | 리스트의 순서를 뒤집습니다 |
sort() | 리스트를 정렬합니다 |
몇 가지를 시도해봅시다:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]
numbers.sort()
print(numbers)
numbers.reverse()
print(numbers)
print(numbers.count(5))
출력:
[1, 1, 2, 3, 3, 4, 5, 5, 6, 9]
[9, 6, 5, 5, 4, 3, 3, 2, 1, 1]
2
내장 함수와 리스트
파이썬은 리스트와 잘 작동하는 여러 가지 내장 함수를 제공합니다:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]
print(max(numbers)) # 최대값
print(min(numbers)) # 최소값
print(sum(numbers)) # 모든 값의 합
출력:
9
1
39
그리고 이렇게 끝입니다, 여러분! 파이썬의 리스트를 생성하고 조작하며, 간단한 연산부터 내장 메서드까지 배웠습니다. 기억하세요, 연습이 첫 번째입니다. 이 개념들을 실험해 보세요.
이 튜토리얼을 마치기 전에 재미있는 사실 하나를 알려드리겠습니다: 파이썬의 리스트는 실제로 동적 배열(dynamic array)로 구현되어 있습니다. 이는 필요에 따라 커지거나 줄 수 있어 매우 유연합니다.
이 튜토리얼이 여러분이 저처럼 즐겁게 안내받을 수 있도록 도와주었다면 기쁩니다. 계속 코딩하고, 계속 배우며, 가장 중요한 것은 파이썬을 즐기는 것입니다!
Credits: Image by storyset