728x90
리스트란?
리스트(List)는 파이썬에서 가장 기본적이고 많이 사용되는 자료구조 중 하나입니다.
연속적으로 할당된 메모리 공간에 여러 개의 데이터를 저장할 수 있으며, 다양한 데이터 타입을 혼합하여 저장할 수 있습니다.
리스트는 대괄호 []로 표현되며, 각 요소는 쉼표 ,로 구분됩니다.
lst = [1, 2, 3, 4, 5]
리스트의 특징
- 가변성: 리스트는 생성 후에도 요소를 추가, 수정, 삭제할 수 있습니다.
- 중복 허용: 리스트는 중복된 값을 가질 수 있습니다.
- 다양한 데이터 타입: 리스트는 정수, 문자열, 불리언 등 다양한 데이터 타입을 혼합하여 저장할 수 있습니다.
- 인덱스 사용 가능: 리스트의 각 요소는 인덱스를 통해 접근할 수 있습니다.
리스트의 생성 방법
리스트를 생성하는 다양한 방법이 있습니다:
- 대괄호 사용: 기본적인 리스트 생성 방법입니다.
- list() 함수 사용: 다른 이터러블(iterable) 객체를 리스트로 변환할 수 있습니다.
- range() 함수 사용: 특정 범위의 숫자를 생성하여 리스트로 만들 수 있습니다.
lst = [1, 2, 3, 4, 5]
lst = list("hello") # ['h', 'e', 'l', 'l', 'o']
lst = list(range(1, 6)) # [1, 2, 3, 4, 5]
리스트 내장 함수
- len(lst): 리스트의 길이를 반환합니다.
- max(lst): 리스트에서 최대값을 반환합니다.
- min(lst): 리스트에서 최소값을 반환합니다.
- sum(lst): 리스트의 모든 요소를 더한 값을 반환합니다.
len([1, 2, 3]) # 3
max([1, 2, 3]) # 3
min([1, 2, 3]) # 1
sum([1, 2, 3]) # 6
인덱싱
리스트의 특정 요소에 접근하는 것을 인덱싱(Indexing)이라고 합니다. 인덱스는 0부터 시작하며, 음수 인덱스를 사용하면 리스트의 끝에서부터 요소를 참조할 수 있습니다.
lst = [10, 20, 30, 40, 50]
print(lst[0]) # 첫 번째 요소: 10
print(lst[-1]) # 마지막 요소: 50
슬라이싱
리스트의 부분 집합을 추출할 때 슬라이싱(Slicing)을 사용합니다.
lst = [10, 20, 30, 40, 50]
print(lst[1:4]) # [20, 30, 40]
print(lst[::2]) # [10, 30, 50]
print(lst[::-1]) # [50, 40, 30, 20, 10]
얕은 복사와 깊은 복사
- 얕은 복사: 리스트를 복사할 때 원본 리스트와 복사본이 동일한 참조를 공유하는 방식입니다. 이 경우, 한 쪽에서 리스트를 변경하면 다른 쪽도 영향을 받습니다.
- 깊은 복사: 원본 리스트와 복사본이 독립적인 객체로 존재하며, 한 쪽의 변경이 다른 쪽에 영향을 미치지 않는 방식입니다.
- 깊은 복사 방법:
- list() 함수를 사용한 복사
- 슬라이싱을 사용한 복사
original = [1, 2, 3]
shallow_copy = original
original = [1, 2, 3]
deep_copy = original[:]
deep_copy = list(original)
deep_copy = original[:]
리스트 정렬
리스트를 정렬하는 방법에는 sort() 메소드와 sorted() 함수가 있습니다.
- lst.sort(): 리스트 자체를 오름차순으로 정렬하며, 원본 리스트가 변경됩니다.
- lst.sort(reverse=True): 리스트를 내림차순으로 정렬합니다.
- sorted(lst): 원본 리스트는 그대로 두고, 정렬된 새로운 리스트를 반환합니다.
lst = [3, 1, 4, 1, 5]
lst.sort()
print(lst) # [1, 1, 3, 4, 5]
lst = [3, 1, 4, 1, 5]
lst.sort(reverse=True)
print(lst) # [5, 4, 3, 1, 1]
lst = [3, 1, 4, 1, 5]
new_lst = sorted(lst)
print(new_lst) # [1, 1, 3, 4, 5]
리스트 컴프리헨션 (List Comprehension)
리스트 컴프리헨션은 리스트를 간결하게 생성할 수 있는 구문입니다.
# 예제: 1부터 5까지의 숫자의 제곱 리스트 생성
squares = [x**2 for x in range(1, 6)]
print(squares) # [1, 4, 9, 16, 25]
정리
- 리스트는 파이썬의 기본 자료구조로, 연속된 메모리 공간에 데이터를 저장하고, 다양한 데이터 타입을 혼합하여 저장할 수 있습니다.
- 리스트는 인덱싱과 슬라이싱을 통해 요소에 접근할 수 있으며, 얕은 복사와 깊은 복사로 리스트를 복제할 수 있습니다.
- 정렬은 sort() 메소드나 sorted() 함수를 사용하여 리스트를 오름차순이나 내림차순으로 정렬할 수 있습니다.
- 리스트 컴프리헨션을 사용하면 간결하고 효율적으로 리스트를 생성할 수 있습니다.
728x90
'Python' 카테고리의 다른 글
[Python] Numpy 데이터 합치기, 쪼개기 (0) | 2024.10.20 |
---|---|
[Python] Numpy 인덱싱, 슬라이싱 (0) | 2024.10.20 |
[Python] 넘파이(Numpy) 배열 (6) | 2024.10.13 |
[Python] 함수 (0) | 2024.08.27 |
[Python] 반복문 (0) | 2024.08.27 |