[이것이 코딩 테스트다] 파이썬 - 리스트 자료형
리스트
리스트 자료형
: 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형
: 배열 및 연결 리스트와 유사
: 리스트 대신 배열 or 테이블 이라고 부르기도 한다
리스트 초기화
: 대괄호( [] ) 안에 원소를 넣어 초기화
: 쉼표(,)를 통해 원소 구분
: 비어있는 리스트 선언 : list() or []
: 인덱스로 리스트 원소에 접근 (인덱스는 0부터 시작)
#크기가 N, 모든 값이 0인 1차원 리스트 초기화
n = 10
a = [0]*n
print(a)
#결과
[0, 0, 0, 0, 0, 0, 0, 0, 0,0]
리스트의 인덱싱과 슬라이싱
- 인덱싱(Indexing)
: 리스트의 특정한 원소에 접근하는 것
: 인덱스 값은 양의 정수, 음의 정수 모두 사용 가능
: 음의 정수를 넣으면 원소 거꾸로 탐색 (뒤에서 -1부터 시작)
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
#첫 번째 원소 출력
print(a[0])
#뒤에서 첫 번째 원소 출력
print(a[-1])
- 슬라이싱(Slicing)
: 연속적인 위치를 갖는 원소들을 가져올 때 사용
: 대괄호 안에 콜론(:) 넣어서 시작 인덱스, 끝 인덱스 설정
: 끝 인덱스는 실제 인덱스 보다 1 크게 설정
ex) print(a[1 : 4]) → a[이상 : 미만] = 두 번째 원소 ~ 네 번째 원소 출력
리스트 컴프리헨션
: 리스트 초기화 하는 방법 중 하나
: 대괄호 안에 조건문과 반복문 적용하여 리스트 초기화
: 리스트 컴프리헨션을 사용할 때 먼저 []를 사용한 후 → 반복문 부터 넣어주는 것을 추천
: 리스트 컴프리헨션을 사용하면 소스코드의 길이를 줄일 수 있다
#0부터 9까지의 수를 포함하는 리스트
array = [i for i in range(10)]
print(array)
#결과
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- for i in range(10) : 0~9까지의 수를 하나씩 꺼내서 i에 저장
- array = [i for i in range(10)] : 이때의 i를 리스트의 원소로 담길 수 있도록 함
#0부터 19까지의 수 중에서 홀수만 포함하는 리스트
#리스트 컴프리헨션
array = [i for i in range(20) if i % 2 == 1]
print(array)
#일반적인 코드
array = []
for i in range(20):
if i % 2 == 1:
array.append(i)
print(array)
#결과
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
- 일반적인 코드와 리스트 컴프리헨션을 사용한 코드와 비교해보면, 코드량이 4줄에서 1줄로 줄어드는 것을 확인할 수 있다
N x M 크기의 2차원 리스트 한 번에 초기화
: array = [[0]*m for _ in range(n)]
cf.) array = [[0]*m]*n (X)
: 내부의 길이가 m인 리스트를 n번만큼 참조값을 복사하는 것과 같다
: 전체 리스트 안에 포함된 각 리스트가 모두 같은 객체로 인식된다
: 리스트 내부 값을 하나만 바꾸면 다른 리스트의 값들도 같이 바뀌게 된다
cf.) 언더바 (_)
: 반복을 수행하되, 반복을 위한 변수의 값을 사용하지 않을 때 사용
리스트 관련 기타 메서드
- 변수.append() : 리스트에 원소 하나 삽입 / O(1)
- 변수.sort() : 리스트 정렬 (오름차순) / O(NlogN)
- 변수.sort(reverse = True) : 리스트 정렬 (내림차순) / O(NlogN)
- 변수.reverse() : 리스트 원소의 순서 뒤집기 / O(N)
- insert(삽입할 위치 인덱스, 삽입할 값) : 특정 위치에 원소 삽입 / O(N)
- 변수.count(특정 값) : 특정 값 가지는 데이터 개수 셀 때 사용 / O(N)
- 변수.remove(특정 값) : 특정 값을 가지는 원소 제거 (여러 개면 하나만 제거) / O(N)
cf.) 리스트에서 특정 값을 가지는 원소 모두 제거하기
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5} #집합 자료형
#remove_set에 포함되지 않은 값만 저장
result = [i for i in a if i not in remove_set]
print(result)
#결과
[1, 2, 4]
- 집합 자료형 : 특정 원소의 존재 유무만을 체크할 때 효과적으로 사용될 수 있는 자료형
'코딩테스트 > 이것이 코딩 테스트다' 카테고리의 다른 글
[이것이 코딩 테스트다] 파이썬 - 기본 입출력 (0) | 2022.06.29 |
---|---|
[이것이 코딩 테스트다] 파이썬 - 사전(딕셔너리), 집합 자료형 (0) | 2022.06.29 |
[이것이 코딩 테스트다] 파이썬 - 문자열, 튜플 자료형 (0) | 2022.06.29 |
[이것이 코딩 테스트다] 파이썬 - 수 자료형 (0) | 2022.06.29 |
[이것이 코딩 테스트다] 알고리즘 성능 평가 (0) | 2022.06.29 |
댓글