리스트(List) : 파이썬에서 자주 사용되는 데이터 구조 중 하나로 여러 항목들을 담을 수 있는 가변한 가변(mutable)한 시퀀스(sequence)
리스트의 기본 구조
# 리스트 생성
my_list = [1, 2, 3, 4, 5]
# 리스트의 기본 구조
print(my_list) # 출력 : [1, 2, 3, 4, 5]
numbers = [1, 2, 3, 4, 5]
# 첫 번째 요소 접근
first_number = numbers[0]
print(first_number) # 출력 : 1
# 마지막 요소 접근
last_number = numbers[-1]
print(last_number) # 출력 : 5
append()
: 리스트에 항목을 추가extend()
: 리스트에 다른 리스트의 모든 항목을 추가insert()
: 리스트의 특정 위치에 항목을 삽입remove()
: 리스트에서 특정 값을 삭제pop()
: 리스트에서 특정 위치의 값을 제거하고 반환index()
: 리스트에서 특정 값의 인덱스를 찾음count()
: 리스트에서 특정 값의 개수를 셈sort()
: 리스트의 항목들을 정렬reverse()
: 리스트의 항목들을 역순으로 뒤집기my_list = [1, 2, 3, 4, 5]
#리스트의 다양한 메서드(Methods)
my_list.append(6) # 리스트에 새로운 항목 추가
print(my_list) # 출력 : [1, 2, 3, 4, 5, 6]
my_list.extend([7, 8, 9]) # 다른 리스트의 모든 항목을 추가
print(my_list) # 출력 : [1, 2, 3, 4, 5, 6, 7, 8, 9]
my_list.insert(2, 10) # 두 번째 위치에 값 삽입
print(my_list) # 출력 : [1, 2, 10, 3, 4, 5, 6, 7, 8, 9]
my_list.remove(3) # 값 3 삭제
print(my_list) # 출력 : [1, 2, 10, 4, 5, 6, 7, 8, 9]
popped_value = my_list.pop(5) # 다섯 번째 위치의 값 제거하고 반환
print(popped_value) # 출력 : 6
print(my_list) # 출력: [1, 2, 10, 4, 5, 7, 8, 9]
print(my_list.index(4)) # 출력 : 3 (값 4의 인덱스)
print(my_list.count(7)) # 출력 : 1 (값 7의 개수)
my_list.sort() # 리스트 정렬
print(my_list) # 출력 : [1, 2, 4, 5, 7, 8, 9, 10]
my_list.reverse() # 리스트 역순으로 뒤집기
print(my_list) # 출력 : [10, 9, 8, 7, 5, 4, 2, 1]
my_list = [1, 2, 3, 4, 5]
# 리스트의 항목 삭제
del my_list[0]
print(my_list) # 출력 : [2, 3, 4, 5]
# 리스트 내 값들의 모든 항목 제거
my_list.clear()
print(my_list) # 출력 : []
my_list = ['apple', 'banana', 'cherry', 'date', 'elderberry']
# 리스트 값 변경
my_list[3] = 'dragonfruit'
print(my_list) # 출력: ['apple', 'banana', 'cherry', 'dragonfruit', 'elderberry']
# 중첩된 리스트 인덱싱
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(nested_list[1][0]) # 출력: 4 (두 번째 리스트의 첫 번째 항목)
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 일부분만 추출
print(my_list[2:5]) # 출력 : [3, 4, 5]
# 시작 인덱스 생략 (처음부터 추출)
print(my_list[:5]) # 출력 : [1, 2, 3, 4, 5]
# 끝 인덱스 생략 (끝까지 추출)
print(my_list[5:]) # 출력 : [6, 7, 8, 9, 10]
# 음수 인덱스 사용 (뒤에서부터 추출)
print(my_list[-3:]) # 출력 : [8, 9, 10]
# 간격 설정 (특정 간격으로 추출)
print(my_list[1:9:2]) # 출력 : [2, 4, 6, 8]
# 리스트 전체 복사
copy_of_list = my_list[:]
print(copy_of_list) # 출력 : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 리스트 뒤집기
reversed_list = my_list[::-1]
print(reversed_list) # 출력 : [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
# 리스트에서 홀수 번째 인덱스의 값들 출력
odd_index_values = my_list[1::2]
print(odd_index_values) # 출력: [2, 4, 6, 8, 10]
# 숫자로 이루어진 리스트 정렬 예시
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
numbers.sort()
print(numbers) # 출력 : [1, 1, 2, 3, 4, 5, 5, 6, 9]
# 문자열로 이루어진 리스트 정렬 예시
words = ['apple', 'banana', 'orange', 'grape', 'cherry']
words.sort()
print(words) # 출력 : ['apple', 'banana', 'cherry', 'grape', 'orange']
# 내림차순으로 리스트 정렬 예시
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
numbers.sort(reverse=True)
print(numbers) # 출력 : [9, 6, 5, 5, 4, 3, 2, 1, 1]
# 리스트의 문자열 길이로 정렬 예시
words = ['apple', 'banana', 'orange', 'grape', 'cherry']
words.sort(key=len)
print(words) # 출력 : ['apple', 'grape', 'banana', 'cherry', 'orange']
튜플(tuple) : 튜플은 변경할 수 없는(immutable) 시퀀스(sequence) 자료형으로, 여러 개의 요소를 저장하는 컨테이너
튜플의 기본 구조
# 튜플의 생성
my_tuple = (1, 2, 3, 'hello', 'world')
# 튜플의 기본 구조
print(my_tuple) # 출력 (1, 2, 3, 'hello', 'world')
my_tuple = (1, 2, 3, 'hello', 'world')
# 첫 번째 요소에 접근
print(my_tuple[0]) # 출력 : 1
# 마지막 요소에 접근
print(my_tuple[-1]) # 출력 : world
# 인덱스 2부터 3까지의 요소를 슬라이싱
print(my_tuple[2:4]) # 출력 : (3, 'hello')
count()
: 지정된 요소의 개수를 반환합니다.index()
: 지정된 요소의 인덱스를 반환합니다.my_tuple = (1, 2, 3, 4, 1, 2, 3)
count_of_1 = my_tuple.count(1)
print(count_of_1) # 출력 : 2 (값 1의 개수)
index_of_3 = my_tuple.index(3)
print(index_of_3) # 출력 : 2 (값 3의 인덱스)
tuple1 = (1, 2, 3)
tuple2 = ('a', 'b', 'c')
# 두 개의 튜플을 합치기
new_tuple = tuple1 + tuple2 # 출력 : (1, 2, 3, 'a', 'b', 'c')
print(new_tuple)
# 튜플을 반복하기
repeated_tuple = tuple1 * 3 # 출력 : (1, 2, 3, 1, 2, 3, 1, 2, 3)
print(repeated_tuple)
# 튜플을 리스트로 변경하기
my_tuple = (1, 2, 3, 4, 5)
my_list = list(my_tuple)
print(my_list) # 출력 : [1, 2, 3, 4, 5]
# 리스트를 튜플로 변경하기
my_list = [1, 2, 3, 4, 5]
my_tuple = tuple(my_list)
print(my_tuple) # 출력 : (1, 2, 3, 4, 5)
딕셔너리(Dictionary) : 키-값 쌍의 데이터를 저장하는 자료구조 (각 키는 유일해야 하지만 값은 중복 가능, 해시 테이블로 구현되어 있어 키를 사용하여 매우 빠르게 값을 찾을 수 있음)
딕셔너리의 기본 구조
my_dict = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3'
}
keys()
: 모든 키를 dict_keys 객체로 반환values()
: 모든 값을 dict_values 객체로 반환items()
: 모든 키-값 쌍을 (키, 값) 튜플로 구성된 dict_items 객체로 반환get()
: 지정된 키에 대한 값을 반환 (키가 존재하지 않으면 기본값을 반환)pop()
: 지정된 키와 해당 값을 딕셔너리에서 제거하고 값을 반환popitem()
: 딕셔너리에서 마지막 키-값 쌍을 제거하고 반환my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
keys = my_dict.keys()
print(keys) # 출력 : dict_keys(['name', 'age', 'city'])
values = my_dict.values()
print(values) # 출력 : dict_values(['John', 30, 'New York'])
items = my_dict.items()
print(items) # 출력 : dict_items([('name', 'John'), ('age', 30), ('city', 'New York')])
age = my_dict.get('age')
print(age) # 출력 : 30
city = my_dict.pop('city')
print(city) # 출력: New York
print(my_dict) # 출력 : {'name': 'John', 'age': 30}
last_item = my_dict.popitem()
print(last_item) # 출력 : ('age', 30)
print(my_dict) # 출력 : {'name': 'John'}