# 빈 리스트 선언 방법 1
a = list()
#빈 리스트 선언 방법 2
a = []
a = [1, 2, 3, 4, 5]
#크기가 N이고, 모든 값이 0인 1차원 리스트 초기화
n = 10
a = [0] * n
#결과 : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
#두번째 원소부터 네 번째 원소까지
print(a[1:4])
리스트 컴프리헨션은 리스트를 초기화하는 방법 중 하나이다.
# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
#결과 : [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
# 1부터 9까지의 수의 제곱 값을 포함하는 리스트
array = [i*i for i in range(1, 10)]
#결과 : [1, 4, 9, 16, 25, 36, 49, 64, 81]
n = 3
m = 4
array = [ [0]*m for _ in range(n) ]
#결과 : [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ]
특정 크기의 2차원 리스트를 초기화할 때는 반드시 리스트 컴프리헨션을 이용해야 한다.
append() : 리스트에 원소를 하나 삽입할 때 사용
a.append()
sort() : 기본 정렬 기능으로 오름차순으로 정렬한다.
a.sort(reverse=True)
: 내림차순으로 정렬
reverse() : 리스트의 원소의 순서를 뒤집어 놓는다.
a.reverse()
insert() : 특정한 인덱스 위치에 원소를 삽입할 때 사용
a.insert(삽입할 위치 인덱스, 삽입할 값)
count() : 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 때 사용
a.count(특정 값)
remove() : 특정한 값을 갖는 원소를 제거, 값을 가진 원소가 여러 개면 하나만 제거한다.
a.remove(특정 값)
insert()와 remove()는 리스트의 원소 위치를 조정해줘야 하기 때문에 append()에 반해 동작이 느리다. 따라서 insert()함수를 남발하면 코테에서 '시간초과'가 날 수 있다.
remove()의 경우 하나만 제거하므로 다음과 같은 방법을 이용하면 모두 제거할 수 있다.
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]
#결과 : [1, 2, 4]
파이썬의 문자열은 내부적으로 리스트와 같이 처리된다. 문자열은 여러 개의 문자가 합쳐진 리스트라 볼 수 있다.
따라서 문자열도 인덱싱과 슬라이싱을 이용 가능하다.
a = "ABCDEF"
print(a[2:4])
#결과: CD
[]
를 이용하지만, 튜플은 소괄호()
를 이용한다.사전 자료형 : 키와 값의 쌍을 데이터로 가지는 자료형
리스트나 튜플은 값을 순차적으로 저장한다.
사전 자료형은 키-값 쌍을 데이터로 가진다는 점에서, 우리가 원하는 변경 불가능한 데이터를 키로 사용할 수 있다.
(변경 불가능한 자료형 : 수 자료형, 문자열 자료형, 튜플 자료형과 같이 한 번 초기화되면 변경이 불가능한 자료형을 의미)
data = dict()
data['사과'] ='Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
print(data)
# 결과 : {'사과': 'Apple'. '바나나': 'Banana', '코코넛': 'Coconut'}
원소 in 사전
: 리스트나 튜플에서도 사용할 수 있는 문법
data = dict()
data['사과'] ='Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
if '사과' in data:
print("'사과'를 키로 가지는 데이터가 존재")
keys() : 키 데이터만 뽑아서 리스트로 이용할 때
values() : 값 데이터만을 뽑아서 리스트로 이용할 때
data = dict()
data['사과'] ='Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
#키 데이터만 담은 리스트
key_list = data.keys()
#값 데이터만 담은 리스트
value_list = dat.values()
사전자료형과 집합자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다.
집합자료형에서는 키가 없고 값 데이터만을 담게 된다. 특정 원소가 있는지 검사하는 연산의 시간복잡도는 사전자료형과 마찬가지로 O(1)이다.
# 집합 자료형 초기화 방법 1
data = set([1, 1, 2, 3, 4, 4, 5])
print(data)
# 집합 자료형 초기화 방법 2
data = {1, 1, 2, 3, 4, 4, 5}
print(data)
#결과 : {1, 2, 3, 4, 5}
&
|
-
a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])
print(a | b) #{1, 2, 3, 4, 5, 6, 7}
print(a & b) #{3, 4, 5}
print(a - b) #{1, 2}
add() : 하나의 집합 데이터에 값을 추가
ex)data.add(4)
update() : 여러 개의 값을 한꺼번에 추가
ex)data.update([5, 6])
remove() : 특정한 값을 제거
ex)data.remove(3)
add(), remove()함수는 모두 시간복잡도가 O(1)