Python 리스트
리스트는 파이썬에서 데이터를 저장하는 4 가지 자료형 중 하나입니다.
# List: 대괄호로 묶인 항목들의 순서가 있는 컬렉션
['John', 'Peter', 'Debora', 'Charles']
인덱스를 사용하여 값 가져오기
# 인덱스를 사용하여 리스트 요소에 접근 (0 부터 시작, 첫 번째 요소는 인덱스 0)
furniture = ['table', 'chair', 'rack', 'shelf']
furniture[0] # 첫 번째 요소 반환: 'table'
'table'
furniture[1]
'chair'
furniture[2]
'rack'
furniture[3]
'shelf'
음수 인덱스
# 음수 인덱스: 리스트 끝에서부터 요소에 접근
furniture = ['table', 'chair', 'rack', 'shelf']
furniture[-1] # 마지막 요소 반환: 'shelf'
'shelf'
furniture[-3]
'chair'
f'The {furniture[-1]} is bigger than the {furniture[-3]}'
'The shelf is bigger than the chair'
로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요
furniture = ['table', 'chair', 'rack', 'shelf']일 때 furniture[-1]은 무엇을 반환합니까?'table''shelf'['shelf']IndexError슬라이싱으로 부분 리스트 가져오기
# Slicing: [start:end] 구문을 사용하여 부분 리스트 가져오기 (end 는 포함되지 않음)
furniture = ['table', 'chair', 'rack', 'shelf']
furniture[0:4] # 인덱스 0 부터 3 까지의 요소 반환 (4 는 제외)
['table', 'chair', 'rack', 'shelf']
furniture[1:3]
['chair', 'rack']
furniture[0:-1]
['table', 'chair', 'rack']
# 시작부터 슬라이싱: 시작 인덱스 생략 (기본값은 0)
furniture[:2] # 처음 두 요소 반환
['table', 'chair']
# 끝까지 슬라이싱: 끝 인덱스 생략 (기본값은 리스트의 끝)
furniture[1:] # 인덱스 1 부터 끝까지의 모든 요소 반환
['chair', 'rack', 'shelf']
furniture[:]
['table', 'chair', 'rack', 'shelf']
전체 리스트를 슬라이싱하면 복사가 수행됩니다:
# 슬라이싱은 복사본을 생성합니다: [:] 는 리스트의 얕은 복사본을 생성합니다
spam = ['cat', 'bat', 'rat', 'elephant']
spam2 = spam[:] # 참조가 아닌 복사본 생성
spam2
['cat', 'bat', 'rat', 'elephant']
spam.append('dog')
spam
['cat', 'bat', 'rat', 'elephant', 'dog']
spam2
['cat', 'bat', 'rat', 'elephant']
로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요
spam이 리스트일 때 spam[:]은 무엇을 생성합니까?len() 으로 리스트 길이 얻기
# len() 은 리스트의 항목 수를 반환합니다
furniture = ['table', 'chair', 'rack', 'shelf']
len(furniture) # 4 반환
4
인덱스로 값 변경하기
# 인덱스에 새 값을 할당하여 리스트 요소 수정
furniture = ['table', 'chair', 'rack', 'shelf']
furniture[0] = 'desk' # 첫 번째 요소 교체
furniture
['desk', 'chair', 'rack', 'shelf']
furniture[2] = furniture[1]
furniture
['desk', 'chair', 'chair', 'shelf']
furniture[-1] = 'bed'
furniture
['desk', 'chair', 'chair', 'bed']
연결 및 반복
# 리스트 연결: + 연산자를 사용하여 두 리스트 결합
[1, 2, 3] + ['A', 'B', 'C'] # [1, 2, 3, 'A', 'B', 'C'] 반환
[1, 2, 3, 'A', 'B', 'C']
# 리스트 반복: * 연산자를 사용하여 리스트를 여러 번 반복
['X', 'Y', 'Z'] * 3 # ['X', 'Y', 'Z', 'X', 'Y', 'Z', 'X', 'Y', 'Z'] 반환
['X', 'Y', 'Z', 'X', 'Y', 'Z', 'X', 'Y', 'Z']
my_list = [1, 2, 3]
my_list = my_list + ['A', 'B', 'C']
my_list
[1, 2, 3, 'A', 'B', 'C']
for 루프와 리스트 사용하기
# for 루프를 사용하여 리스트 요소 반복
furniture = ['table', 'chair', 'rack', 'shelf']
for item in furniture: # 각 항목을 순회
print(item)
table
chair
rack
shelf
enumerate() 로 루프에서 인덱스 얻기
# enumerate() 는 루프에서 인덱스와 값을 모두 반환합니다
furniture = ['table', 'chair', 'rack', 'shelf']
for index, item in enumerate(furniture): # 인덱스와 항목을 함께 가져오기
print(f'index: {index} - item: {item}')
index: 0 - item: table
index: 1 - item: chair
index: 2 - item: rack
index: 3 - item: shelf
zip() 으로 여러 리스트 루프 돌기
# zip() 은 여러 리스트를 요소별로 결합하여 루프를 돕습니다
furniture = ['table', 'chair', 'rack', 'shelf']
price = [100, 50, 80, 40]
for item, amount in zip(furniture, price): # 두 리스트의 요소를 쌍으로 묶기
print(f'The {item} costs ${amount}')
The table costs $100
The chair costs $50
The rack costs $80
The shelf costs $40
in 및 not in 연산자
# in 연산자: 항목이 리스트에 있는지 확인
'rack' in ['table', 'chair', 'rack', 'shelf'] # True 반환
True
'bed' in ['table', 'chair', 'rack', 'shelf']
False
furniture = ['table', 'chair', 'rack', 'shelf']
'bed' not in furniture
True
'rack' not in furniture
False
다중 할당 트릭
다중 할당 트릭은 한 줄의 코드로 리스트의 여러 변수에 값을 할당할 수 있는 바로 가기 방법입니다. 따라서 다음과 같이 하는 대신:
furniture = ['table', 'chair', 'rack', 'shelf']
table = furniture[0]
chair = furniture[1]
rack = furniture[2]
shelf = furniture[3]
다음과 같이 한 줄을 입력할 수 있습니다:
furniture = ['table', 'chair', 'rack', 'shelf']
table, chair, rack, shelf = furniture
table
'table'
chair
'chair'
rack
'rack'
shelf
'shelf'
다중 할당 트릭은 두 변수의 값을 교환하는 데에도 사용될 수 있습니다:
a, b = 'table', 'chair'
a, b = b, a
print(a)
chair
print(b)
table
index 메서드
index 메서드를 사용하면 값을 이름으로 전달하여 해당 값의 인덱스를 찾을 수 있습니다:
furniture = ['table', 'chair', 'rack', 'shelf']
furniture.index('chair')
1
값 추가하기
append()
append는 list의 끝에 요소를 추가합니다:
furniture = ['table', 'chair', 'rack', 'shelf']
furniture.append('bed')
furniture
['table', 'chair', 'rack', 'shelf', 'bed']
로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요
append() 메서드는 리스트에 대해 어떤 작업을 수행합니까?insert()
insert는 주어진 위치의 list에 요소를 추가합니다:
furniture = ['table', 'chair', 'rack', 'shelf']
furniture.insert(1, 'bed')
furniture
['table', 'bed', 'chair', 'rack', 'shelf']
값 제거하기
del
del은 인덱스를 사용하여 항목을 제거합니다:
furniture = ['table', 'chair', 'rack', 'shelf']
del furniture[2]
furniture
['table', 'chair', 'shelf']
del furniture[2]
furniture
['table', 'chair']
remove()
remove는 실제 값을 사용하여 항목을 제거합니다:
furniture = ['table', 'chair', 'rack', 'shelf']
furniture.remove('chair')
furniture
['table', 'rack', 'shelf']
반복되는 항목 제거
값이 리스트에 여러 번 나타나는 경우, 해당 값의 첫 번째 인스턴스만 제거됩니다.
pop()
기본적으로 pop은 리스트의 마지막 항목을 제거하고 반환합니다. 선택적 매개변수로 요소의 인덱스를 전달할 수도 있습니다:
animals = ['cat', 'bat', 'rat', 'elephant']
animals.pop()
'elephant'
animals
['cat', 'bat', 'rat']
animals.pop(0)
'cat'
animals
['bat', 'rat']
로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요
pop()을 호출하면 어떤 작업이 수행됩니까?sort() 로 값 정렬하기
numbers = [2, 5, 3.14, 1, -7]
numbers.sort()
numbers
[-7, 1, 2, 3.14, 5]
furniture = ['table', 'chair', 'rack', 'shelf']
furniture.sort()
furniture
['chair', 'rack', 'shelf', 'table']
reverse 키워드 인수에 True를 전달하여 sort()가 값을 역순으로 정렬하도록 할 수도 있습니다:
furniture.sort(reverse=True)
furniture
['table', 'shelf', 'rack', 'chair']
일반적인 알파벳 순서로 값을 정렬해야 하는 경우, sort() 메서드 호출에서 key 키워드 인수에 str.lower를 전달하여 정렬할 수 있습니다:
letters = ['a', 'z', 'A', 'Z']
letters.sort(key=str.lower)
letters
['a', 'A', 'z', 'Z']
내장 함수 sorted를 사용하여 새 리스트를 반환할 수 있습니다:
furniture = ['table', 'chair', 'rack', 'shelf']
sorted(furniture)
['chair', 'rack', 'shelf', 'table']
Tuple 자료형
튜플과 리스트의 주요 차이점은 튜플은 불변 (immutable) 객체인 반면 리스트는 가변 (mutable) 객체라는 것입니다. 이는 튜플은 변경할 수 없지만 리스트는 수정할 수 있음을 의미합니다. 튜플은 리스트보다 메모리 효율성이 더 좋습니다.
furniture = ('table', 'chair', 'rack', 'shelf')
furniture[0]
'table'
furniture[1:3]
('chair', 'rack')
len(furniture)
4
튜플이 리스트와 다른 주된 방식은 튜플이 문자열처럼 불변이라는 것입니다.
list() 와 tuple() 간 변환
tuple(['cat', 'dog', 5])
('cat', 'dog', 5)
list(('cat', 'dog', 5))
['cat', 'dog', 5]
list('hello')
['h', 'e', 'l', 'l', 'o']
로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요