컴공생 누르지 마세요! 컴공생 울어요.
[Python 문법 공부] 01. 자료형 - 리스트 자료형 본문
리스트 자료형
- 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용
- C나 자바에서의 배열 기능 포함
- 내부적으로 연결 리스트 자료구조 -> append() & remove() 함수 지원
리스트 만들기
a = [1, 2, 3, 4, 5]
# 인덱스 이용 접근
print(a[2]) # 3
# 빈 리스트 선언 방법
a = list()
a = []
#크기가 N이고, 모든 값이 0인 1차원 리스트 초기화
n = 10
a = [0] * n
print(a) # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
인덱싱과 슬라이싱
- 인덱스가 음수면 맨 뒤 원소부터 -1로 시작.
- 슬라이싱의 경우, a[시작 인덱스:끝 인덱스]
- 이때, 끝 인덱스에 1을 뺀 인덱스까지 출력됨
a = [1,2,3,4,5]
# 인덱싱
print(a[-1]) # 5
print(a[-3]) # 3
# 슬라이싱
print(a[1:4]) # [2,3,4]
리스트 컴프리헨션
- 대괄호 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화하는 방법
# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
# 1부터 9까지의 수들의 제곱으로 구성된 리스트
array = [i*i for i in range(1, 10)]
# N X M 크기의 2차원 리스트 초기화
n = 2
m = 3
array = [[0] * m for _ in range(n)]
# [[0,0,0], [0,0,0]]
- 언더바 (_)는 반복을 수행하되, 반복을 위한 변수의 값을 무시하고자 할 때 사용
# Hello world 5번 출력
for _ in range(5):
print("Hello world")
- 특정 크기의 2차원 리스트를 초기화할 때는 반드시 리스트 컴프리헨션 사용!
- 아래와 같이 초기화 시 의도하지 않은 결과가 출력될 수 있음. (내부적으로 포함된 n 개의 리스트가 모두 동일한 객체에 대한 n개의 레퍼런스로 인식되기 때문)
array = [[0] * m] * n # [[0,0,0], [0,0,0]]
array[1][1] = 5
print(array) # [[0,5,0], [0,5,0]]
리스트 관련 기타 메서드
메서드명 | 사용법 | 설명 | 시간 복잡도 |
append() | 리스트명.append(특정 값) | 리스트에 원소를 하나 삽입 | O(1) |
sort() | 리스트명.sort() 리스트명.sort(reverse = True) |
기본적으로 오름차순 정렬, reverse = True를 통해 내림차순 정렬 | O(NlogN) |
reverse() | 리스트명.reverse() | 리스트 원소들을 역순으로 정렬 | O(N) |
insert() | 리스트명.insert(삽입할 인덱스 위치, 삽입할 값) | 특정 인덱스 위치에 원소를 삽입 | O(N) |
count() | 변수명.count(특정 값) | 리스트에서 특정 값을 가지는 데이터의 개수를 셀 때 사용 | O(N) |
remove() | 변수명.remove(특정 값) | 특정한 값을 갖는 원소를 제거하는데, 값을 가진 원소가 여러 개면 하나만 제거 | O(N) |
- 주의) 코테에서 insert()나 remove() 남발 시 시간초과가 뜰 수 있음.
* 특정한 값의 원소를 모두 제거하는 코드
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}
# remove_set에 포함되어 있지 않은 원소로만 result 리스트 구성
result = [i for i in a if i not in remove_set]
print(result)
'STUDY > Python' 카테고리의 다른 글
[Python 문법 공부] 01. 자료형 - 집합 자료형 (0) | 2023.03.02 |
---|---|
[Python 문법 공부] 01. 자료형 - 사전 자료형 (0) | 2023.03.02 |
[Python 문법 공부] 01. 자료형 - 튜플 자료형 (0) | 2023.03.02 |
[Python 문법 공부] 01. 자료형 - 문자열 자료형 (0) | 2023.03.02 |
[Python 문법 공부] 01. 자료형 - 수 자료형 (0) | 2023.03.02 |
Comments