파이썬 - 리스트

안녕하세요, 잠재력 있는 프로그래머 여러분! 오늘은 파이썬의惊奇한 세계, 리스트에 빠지러 가요. 여러분의 친절한 이웃 컴퓨터 과학 교사로서, 여러분을 이 여정을 안내하게 되어 기쁩니다. 기본부터 점진적으로 더 고급 개념까지 배우러 가겠습니다. 믿어주십시오, 이 튜토리얼을 끝내면 여러분은 프로처럼 리스트를 사용할 수 있을 거예요! ?

Python - Lists

파이썬 리스트

파이썬의 리스트는 데이터 구조에서의 스위스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