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]은 무엇을 반환합니까?
A. 'table'
B. 'shelf'
C. ['shelf']
D. 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[:]은 무엇을 생성합니까?
A. 동일한 리스트에 대한 참조
B. 빈 리스트
C. 리스트의 얕은 복사본
D. 뒤집힌 리스트

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()

appendlist의 끝에 요소를 추가합니다:

furniture = ['table', 'chair', 'rack', 'shelf']
furniture.append('bed')
furniture
['table', 'chair', 'rack', 'shelf', 'bed']
퀴즈

로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요

append() 메서드는 리스트에 대해 어떤 작업을 수행합니까?
A. 리스트 끝에 요소를 추가합니다
B. 리스트 시작 부분에 요소를 추가합니다
C. 마지막 요소를 대체합니다
D. 마지막 요소를 제거합니다

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()을 호출하면 어떤 작업이 수행됩니까?
A. 마지막 항목만 제거합니다
B. 항목을 제거하고 반환합니다 (기본적으로 마지막 항목, 또는 지정된 인덱스)
C. 마지막 항목만 반환하고 제거하지 않습니다
D. 리스트의 모든 항목을 제거합니다

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']
퀴즈

로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요

파이썬에서 리스트와 튜플의 주요 차이점은 무엇입니까?
A. 리스트는 숫자만 포함할 수 있고, 튜플은 모든 것을 포함할 수 있습니다
B. 튜플이 생성 속도가 더 빠릅니다
C. 리스트는 가변 (변경 가능) 이고, 튜플은 불변 (변경 불가능) 입니다
D. 리스트는 대괄호를 사용하고, 튜플은 중괄호를 사용합니다

관련 링크