본문 바로가기
STUDY/PYTHON

[Python] 3. 리스트

by 짤롱 2024. 11. 8.
728x90

리스트(List)

1. 리스트 선언

- 리스트(List) : 여러 가지 자료를 저장할 수 있는 자료형

- 요소(Element) : 리스트 내부에 넣는 자료 및 내용

- 인덱스(Index) : 리스트 내부에 값의 위치

 

1.1 기본 표현

- 대괄호([ ]) 안에 쉼표(,)로 구분한 값을 나열하여 선언

- list() 혹은 [ ]로 빈 리스트 생성 가능

- len()함수로 요소 개수 확인 가능

- 요소의 자료형이 동일하지 않아도 사용 가능

- 리스트를 요소로 가지는 리스트 생성 가능

# 기본 표현
# 빈 리스트 생성
my_list1 = []
my_list2 = list()

# 확인
print(my_list1)       # []
print(my_list2)       # []

# 리스트 생성
my_list3 = [85, 90, 100, 80, 75]

# 확인
print(my_list3)       # [85, 90, 100, 80, 75]

# 요소 개수 확인
print(len(my_list3))  # 5

# 다양한 자료형 리스트 생성 - 숫자형, 논리형, 문자형, 리스트
my_list4 = [85, 100, True, False, "문자열", [1, 2, 3]]

# 확인
print(my_list4)       # [85, 100, True, False, '문자열', [1, 2, 3]]

 

1.2 range() 함수로 리스트 선언

- 연속된 정수를 리스트로 만들 때 함께 사용

- range(n) : 0부터 n-1까지의 정수

- range(m, n) : m부터 n-1까지의 정수

- range(m, n, x) : m부터 n-1까지 x만큼 증가하는 정수

# range() 함수 사용
# range(n)
num1 = list(range(5))

# 확인
print(num1)  # [0, 1, 2, 3, 4]

# range(m, n)
num2 = list(range(-5, 5))

# 확인
print(num2)  # [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]

# range(m, n, x)
num3 = list(range(0, 11, 2))

# 확인
print(num3)  # [0, 2, 4, 6, 8, 10]

 

2. 리스트 연산

- 리스트 + 리스트 = 리스트 결합

- 리스트 * 정수 = 리스트 반복

- 리스트에 빼기와 나누기 연산은 불가능

- 리스트에 음수나 0을 곱하면 리스트 요소 제거

# 리스트 선언
my_list1 = [85, 90, 100, 80, 75]
my_list2 = [70, 95, 90]

# 리스트 결합
my_list3 = my_list1 + my_list2

# 확인
print(my_list3)  # [85, 90, 100, 80, 75, 70, 95, 90]

# 리스트 반복
my_list4 = my_list2 * 2

# 확인
print(my_list4)  # [70, 95, 90, 70, 95, 90]

# 리스트 제거 - 빈 리스트 생성
my_list5 = my_list4 * 0

# 확인
print(my_list5)  # []

 

3. 리스트 표현

3.1 리스트 인덱싱(Indexing)

- 인덱스를 사용해 리스트 안에서 특정 요소를 찾는 과정

- 대괄호 안에 정수형 인덱스를 지정하여 원하는 위치의 요소 확인

- 인덱스 값은 0부터 시작

- 리스트를 요소로 가지는 리스트 인덱싱 가능

  A B C [1, 2, 3] 4 5 True False
순방향 인덱스 0 1 2 3 4 5 6 7
역방향 인덱스 -8 -7 -6 -5 -4 -3 -2 -1

 

# 리스트 인덱싱
# 리스트 선언
my_list = ["A", "B", "C", [1, 2, 3], 4, 5, True, False]

print(my_list[0])     # A
print(my_list[5])     # 5
print(my_list[-1])    # False
print(my_list[-4])    # 4
print(my_list[3][2])  # 3

 

3.2 리스트 슬라이싱(Slicing)

- 인덱스를 사용해 리스트 안에서 특정 범위의 요소를 찾는 과정

- 대괄호 안에 정수형 인덱스로 범위를 지정하여 요소 확인

- [m, n] : 인덱스 m부터 n-1까지의 요소 출력

# 리스트 슬라이싱
# 리스트 선언
my_list = ["A", "B", "C", [1, 2, 3], 4, 5, True, False]

print(my_list[0:3])    # ['A', 'B', 'C']
print(my_list[2:6])    # ['C', [1, 2, 3], 4, 5]
print(my_list[:4])     # ['A', 'B', 'C', [1, 2, 3]]
print(my_list[2:])     # ['C', [1, 2, 3], 4, 5, True, False]
print(my_list[:])      # ['A', 'B', 'C', [1, 2, 3], 4, 5, True, False]
print(my_list[3][:2])  # [1, 2]

 

4. 리스트 요소 변경, 추가, 제거

4.1 리스트 요소 변경

- 인덱싱 혹은 슬라이싱 결과에 대한 요소 값 변경

- 범위를 벗어나는 요소에 대한 값은 변경이 아닌 추가

# 리스트 요소 변경
# 리스트 선언
num = list(range(10))

# 확인
print(num)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 인덱싱 요소 값 변경
num[5] = 15

# 확인
print(num)  # [0, 1, 2, 3, 4, 15, 6, 7, 8, 9]

# 슬라이싱 요소 값 변경
num[3:6] = [23, 24, 25]

# 확인
print(num)  # [0, 1, 2, 23, 24, 25, 6, 7, 8, 9]

# 범위 밖 요소 값 변경
num[8:] = [18, 19, 20, 21]
print(num)  # [0, 1, 2, 23, 24, 25, 6, 7, 18, 19, 20, 21]

 

4.2 리스트 요소 추가

- append(x) : 리스트 맨 뒤에 x 요소 추가

- insert(x, y) : x 위치에 y 요소 추가

- extend(list) : 리스트 뒤에 새로운 리스트 요소 추가

# 리스트 요소 추가
# 리스트 선언
num = list(range(5))

# 확인
print(num)  # [0, 1, 2, 3, 4]

# 맨 뒤에 요소 추가
num.append(5)

# 확인
print(num)  # [0, 1, 2, 3, 4, 5] 

# 리스트 중간에 요소 추가
num.insert(2, 12)

# 확인
print(num)  # [0, 1, 12, 2, 3, 4, 5]

# 새로운 리스트 추가
new_num = [16, 17, 18, 19]
num.extend(new_num)

# 확인
print(num)  # [0, 1, 12, 2, 3, 4, 5, 16, 17, 18, 19]

 

4.3 리스트 요소 제거

- del : 리스트의 특정 인덱스에 있는 요소 제거

- pop(x) : 특정 인덱스에 있는 요소 제거

               매개변수, x를 입력하지 않으면 마지막요소 제거

- remove() : 리스트의 특정 값을 제거

- clear() : 리스트의 모든 요소 제거

# 리스트 요소 제거
# 리스트 선언
num = list(range(10))

# 확인
print(num)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 특정 인덱스 요소 제거
del num[3]

# 확인
print(num)  # [0, 1, 2, 4, 5, 6, 7, 8, 9]

# 특정 범위 요소 제거
del num[6:8]

# 확인
print(num)  # [0, 1, 2, 4, 5, 6, 9]

# 특정 인덱스 요소 제거
num.pop()

# 확인
print(num)  # [0, 1, 2, 4, 5, 6]

# 특정 값 제거
num.remove(4)

# 확인
print(num)  # [0, 1, 2, 5, 6]

# 전부 제거
num.clear()

# 확인
print(num)  # []

 

5. 리스트 관련 메소드

- count() : 리스트의 요소 개수 확인

- index() : 리스트의 요소가 처음 나타나는 인덱스 확인

- reverse() : 리스트의 요소 순서 변경

- sort() : 리스트의 요소를 오름차순으로 정렬

# 리스트 선언
my_list = [85, 90, 100, 80, 75, 100, 80, 95, 80]

# 리스트 요소 개수 확인
print(my_list.count(80))   # 3

# 리스트 요소가 처음 나타나는 인덱스 확인
print(my_list.index(100))  # 2

# 순서 변경
my_list.reverse()

# 확인
print(my_list)             # [80, 95, 80, 100, 75, 80, 100, 90, 85]

# 오름차순으로 정렬
my_list.sort()

# 확인
print(my_list)             # [75, 80, 80, 80, 85, 90, 95, 100, 100]
반응형

'STUDY > PYTHON' 카테고리의 다른 글

[Python] 5. 딕셔너리  (0) 2024.11.10
[Python] 4. 튜플 & 집합  (3) 2024.11.09
[Python] 2. 문자형  (0) 2024.09.21
[Python] 1. 연산자와 기본 자료형(2)  (2) 2024.09.16
[Python] 1. 연산자와 기본 자료형(1)  (1) 2024.09.16