본문 바로가기

Python

[Python] 리스트

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