Lumpy Space Princess - Adventure Time
코딩테스트/이것이 코딩 테스트다

[이것이 코딩 테스트다] 파이썬 - 리스트 자료형

yaebb_82 2022. 6. 29.

 

 

리스트

리스트 자료형

: 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형

: 배열 및 연결 리스트와 유사

: 리스트 대신 배열 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]

- 집합 자료형 : 특정 원소의 존재 유무만을 체크할 때 효과적으로 사용될 수 있는 자료형

 

 

 

반응형

댓글