Python에서 리스트(list)는 여러 요소를 하나의 변수에 저장할 수 있는 시퀀스 데이터 타입입니다. 리스트는 가변적(mutable)이며, 다양한 데이터 타입을 포함할 수 있어 데이터 관리에 매우 유용합니다. 이번 포스팅에서는 Python 리스트의 생성 방법부터 다양한 활용법까지 살펴보겠습니다.
0. 리스트 : List
리스트(List)는 시퀀스 데이터 타입의 하나로, 요소를 순서대로 저장할 수 있습니다.
각 요소는 고유한 인덱스를 가지며, 이를 통해 요소에 접근할 수 있습니다.
리스트의 특징
• 순서가 있음(Order): 리스트는 입력된 순서를 유지합니다.
• 다양한 데이터 타입: 문자열, 숫자, 불리언, 객체 등 모든 데이터 타입을 포함할 수 있습니다.
• 중복 허용: 동일한 값을 여러 번 포함할 수 있습니다.
• 가변성(Mutability): 요소의 추가, 삭제, 수정이 가능합니다.
1. 리스트 생성하기
리스트는 대괄호 []를 사용하여 생성하며, list() 함수를 사용할 수 있습니다.
각 요소는 쉼표 ,로 구분합니다.
또한, list() 함수를 사용하여 다른 이터러블(iterable) 객체를 리스트로 변환할 수 있습니다.
1.1 대괄호를 사용한 리스트

1.2 빈 리스트 생성

1.3 list() 함수를 사용한 리스트

1.4 문자열이나 튜플을 리스트로 변환

Tip : 리스트는 중첩이 가능하며, 리스트 안에 리스트를 넣을 수도 있습니다.

• 요소의 데이터 타입이 달라도 동작하지만, 일관된 데이터 타입을 유지하는 것이 가독성과 관리에 유리합니다.
2. 리스트 인덱싱과 슬라이싱 : List Indexing and Slicing
인덱싱 (Indexing)
리스트의 각 요소는 인덱스를 통해 접근할 수 있습니다.
• 인덱스는 0부터 시작합니다.
• 음수 인덱스를 사용하면 리스트의 뒤에서부터 접근할 수 있습니다.

슬라이싱 (Slicing)
슬라이싱은 리스트의 부분 집합을 반환합니다.
• 구문: list[start:end:step]
• start: 시작 인덱스(포함)
• end: 종료 인덱스(포함하지 않음)
• step: 간격 (기본값은 1)

Tip : 슬라이싱 결과는 새로운 리스트로 반환됩니다. 원본 리스트는 변경되지 않습니다.
• 간격(step)을 음수로 설정하면 리스트를 역순으로 반환할 수 있습니다.

출력 결과:

Tip : 슬라이싱 범위를 초과해도 오류가 발생하지 않고, 가능한 부분만 반환됩니다.

출력 결과:

3. 리스트 수정하기
리스트는 가변적(mutable)이므로, 요소의 추가, 수정, 삭제가 가능합니다.
3.1 요소 추가
• append(): 리스트의 끝에 요소를 추가합니다.

• insert(): 지정한 인덱스 위치에 요소를 추가합니다.

• extend(): 다른 리스트의 모든 요소를 기존 리스트에 추가합니다.

3.2 요소 수정
특정 인덱스의 값을 직접 할당하여 수정할 수 있습니다.

3.3 요소 삭제
• remove(): 지정한 값을 가진 첫 번째 요소를 삭제합니다.

• pop(): 지정한 인덱스의 요소를 삭제하고, 그 값을 반환합니다. 인덱스를 지정하지 않으면 마지막 요소를 삭제합니다.

• del 키워드: 특정 인덱스의 요소를 삭제하거나, 슬라이싱을 통해 여러 요소를 삭제할 수 있습니다.

• clear(): 리스트의 모든 요소를 삭제하여 빈 리스트로 만듭니다.

주의할 점
• remove()와 pop()의 차이: remove()는 값을 삭제하고, pop()은 인덱스를 지정해 삭제합니다.
• 슬라이싱으로 삭제: del 키워드를 사용할 때 슬라이싱을 통해 범위를 삭제하면 범위 내 모든 요소가 삭제됩니다.
4. 리스트 탐색 및 활용
4.1 탐색
• in 키워드를 사용하여 리스트에 특정 요소가 있는지 확인할 수 있습니다.

• 특정 값의 인덱스 반환

4.2 정렬
• sort(): 리스트를 오름차순으로 정렬합니다. (기본적으로 원본 리스트가 수정됩니다)

• reverse(): 리스트의 순서를 역순으로 뒤집습니다.

5. 리스트 내포 : List Comprehension
리스트 내포는 간결하고 효율적으로 새로운 리스트를 생성하는 Python 고유의 문법입니다.
구문

예제
(1) 1부터 10까지의 제곱수 생성

(2) 짝수만 필터링

6. 2차원 리스트 : Two-Dimentional (2D) Lists
Python 리스트는 중첩이 가능하므로, 2차원 리스트를 사용하여 행과 열 형태의 데이터를 저장하고 관리할 수 있습니다. 이를 통해 행렬(matrix) 또는 표 구조 데이터를 표현할 수 있습니다.
• 2차원 리스트 생성
2차원 리스트는 리스트 안에 리스트를 요소로 포함한 구조로 생성됩니다.

• 2차원 리스트 요소 접근
2차원 리스트의 요소는 행(row)과 열(column)의 인덱스를 사용하여 접근할 수 있습니다.
• 구문: list[row][column]

• 2차원 리스트 요소 수정
2차원 리스트는 특정 요소를 직접 수정할 수 있습니다.

• 2차원 리스트 순회
2차원 리스트는 중첩된 for 문을 사용하여 모든 요소를 순회할 수 있습니다.

출력 결과:

• 리스트 내포를 사용한 2차원 리스트 생성
리스트 내포(List Comprehension)를 사용하여 2차원 리스트를 간결하게 생성할 수 있습니다.

출력 결과:

• 2차원 리스트에서 특정 열 추출
2차원 리스트에서 특정 열을 추출하려면 리스트 내포를 사용합니다.

•2차원 리스트로 전치 행렬 만들기
전치 행렬(Transpose)을 구하려면 zip() 함수와 리스트 내포를 조합하여 사용할 수 있습니다.

출력 결과:

주의할 점
1. 인덱스 유효성:
인덱스가 리스트 범위를 초과하면 IndexError가 발생합니다. 항상 인덱스를 확인하세요.

2. 가변 객체의 참조:
리스트 안의 리스트는 참조로 저장되므로, 한 행의 변경이 원치 않는 영향을 미칠 수 있습니다.

3. 비정형 리스트:
2차원 리스트의 각 행의 길이가 다를 수 있습니다. 작업 전에 각 행의 길이를 확인하는 것이 중요합니다.

7. 리스트 활용
리스트 병합
• + 연산자로 두 리스트를 병합할 수 있습니다.

출력 결과:

리스트 반복
• * 연산자로 리스트를 반복할 수 있습니다.

출력 결과:

Python의 리스트는 강력하면서도 유연한 데이터 타입으로, 다양한 데이터 처리 작업에 사용됩니다. 리스트의 생성, 수정, 탐색, 정렬, 고급 활용(List Comprehension)까지 Python 리스트의 모든 기능을 잘 활용한다면 더욱 효율적인 코드를 작성할 수 있습니다. 이상으로 포스팅 마치겠습니다.
'Language > Python' 카테고리의 다른 글
| <Python>#6 : Python Strings : 기본 개념부터 문자열 메서드까지 (1) | 2025.01.06 |
|---|---|
| <Python>#5 : Python Loop : for와 while로 반복 제어하기 (7) | 2025.01.04 |
| <Python>#3 : Python Control Flow : 조건과 논리로 흐름 제어하기 (7) | 2025.01.03 |
| <Python>#2 : Python Functions : 함수 정의부터 호출까지 (10) | 2025.01.02 |
| <Python>#1 : Python 기본 문법 : Python Syntax와 Variable Types (4) | 2025.01.01 |