Zeta Oph's Study

[Python 기초 문법] 리스트(List) 본문

프로그래밍/Python

[Python 기초 문법] 리스트(List)

Zeta Oph 2024. 2. 19. 10:08

학점인정시험 프로그래밍 기초 과목 준비... 2주의 기적 가자ㅏ

Python은 아마 그냥 제가 정리하기 위한 용도로 글을 쓸거 같아서, 설명이 많이 없고 코드가 많을 것 같습니다.


선언, 인덱싱 및 슬라이싱

a = [1, 2, 3]
b = [3.14, 2.71, -0.01, 256]
c = [1, 2, 'asdf', 'qwer']
d = [1, 2, ['asdf', 'qwer']]

e = []
f = list()

 

모든 자료형을 포함할 수 있고,

자료형 혼합도 가능하다.

리스트를 원소로 가지는 리스트도 가능하다.

 

e, f : 비어있는 리스트 선언 방법

 

인덱스는 다른 프로그래밍 언어와 같이 0부터 시작, 음수 인덱스는 뒤에서부터 (예 : -1 인덱스는 가장 뒤의 원소)

print(d[0])
print(d[-1])
print(d[-1][0])
TERMINAL

1
['asdf', 'qwer']
asdf

 

슬라이싱 : 리스트를 자르는 방법

[i:j]로 슬라이싱하면, [i, j)로 구간이 설정된. (끝점 포함 X)

print(b[1:])
print(d[2][:1])
TERMINAL

[2.71, -0.01, 256]
['asdf']

리스트 연산

더하기 연산 (+) : 리스트 두 개 이어 붙이기

반복 연산 (*) : 리스트를 반복하여 이어 붙이기

길이 구하기 : len() 함수 이용

최댓값/최솟값 찾기 : max() / min() 함수 이용

합 구하기 : sum() 함수 이용

a = [1, 2, 3]
b = [4, 5]
a = a + b
print(a)
a = a * 3
print(a)
print(len(a))
print(max(a), min(a))
print(sum(a))
TERMINAL

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
15
5 1
45

 

반복 연산은 숫자를 앞에 두어도 동일하게 실행된다.

합 연산은 수를 나타내는 자료형만 가능하지만, boolean의 경우 True는 1, False는 0으로 계산된다.


리스트 수정 및 삭제

수정 : 인덱스 지정하여 수정할 값 대입

삭제 : del 함수 이용

a = [1, 2, 3, 3]
a[3] = 4
print(a)
del a[:2]
print(a)
TERMINAL

[1, 2, 3, 4]
[3, 4]

 

*주의 사항 : del 함수는 결과를 대입하는 방식이 아니다. 즉, b = del a[:2]와 같이 실행할 수 없다.


리스트 관련 함수

리스트 변수 이름 뒤에 .함수 를 붙여서 사용한다. 따로 어떤 값을 반환한다고 명시하는 경우가 아니면, 아래 함수들은 모두 del 함수처럼, 결과를 대입하는 방식이 아니다.

 

리스트 요소 추가 : a.append(x)

리스트 a의 맨 뒤에 x를 추가

a = [1, 2, 3, 4]
a.append(5)
print(a)
TERMINAL

[1, 2, 3, 4, 5]

 

리스트 정렬 : a.sort(reverse=False, key=<function>)

리스트 a를 정렬함 (기본은 오름차순)

key=<funtion>을 통해 정렬 기준 설정 가능 (ex)key=len : 길이로 정렬)

a = [3, 5, 1, 2, 4]
a.sort(reverse=True)
print(a)
TERMINAL

[5, 4, 3, 2, 1]

 

리스트 뒤집기 : a.reverse()

리스트 a의 순서를 뒤집음

a = [1, 2, 3, 4, 5]
a.reverse()
print(a)
TERMINAL

[5, 4, 3, 2, 1]

 

인덱스 반환 : a.index(x)

리스트 a 안에 x가 포함되어 있을 경우, x의 인덱스 반환 (없으면 오류 발생)

a = [1, 2, 3, 4, 5]
print(a.index(3))
TERMINAL

2

 

리스트 요소 삽입 : a.insert(i, x)

리스트 a의 인덱스 i 위치에 x 삽입

a = [1, 2, 4, 5]
a.insert(2, 3)
print(a)
TERMINAL

[1, 2, 3, 4, 5]

 

리스트 요소 삭제 : a.remove(x)

리스트 a에서 가장 앞에 있는 x만 삭제 (x가 여러개 있더라도 가장 앞에 있는 것만)

a = [1, 2, 3, 1, 2]
a.remove(1)
print(a)
TERMINAL

[2, 3, 1, 2]

 

리스트 요소 끄집어 내기 : a.pop(pos=-1)

리스트 a에서 a[pos]를 끄집어 내어 반환. 이때 리스트 a에서 a[pos]는 삭제된다.

a = [1, 2, 3, 4, 5]
print(a.pop(2))
print(a)
TERMINAL

3
[1, 2, 4, 5]

 

리스트에 포함된 요소 개수 세기 : a.count(x)

리스트 a에 있는 x의 개수를 반환

a = [1, 2, 3, 1, 2, 1]
print(a.count(1))
TERMINAL

3

 

리스트 확장 : a.extend(b)

a = a + b와 같은 역할. 이때 b는 리스트여야만 한다. 

a = [1, 2, 3]
a.extend([4, 5])
print(a)
TERMINAL

[1, 2, 3, 4, 5]

사실 이거 말고도 더 많은데, 이 정도만 정리하는걸로...