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 리스트의 모든 기능을 잘 활용한다면 더욱 효율적인 코드를 작성할 수 있습니다. 이상으로 포스팅 마치겠습니다.

+ Recent posts