여러 개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라고 하고, 이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다.
자료구조는 각각의 컨테이너 자료형에 따라서 차이가 있으며, 파이썬의 대표적인 컨테이너 자료형으로는 리스트(List), 튜플(Tuple), 딕셔너리(Dic), 셋트(Set)
가 있다.
배열과 같이 여러 개의 데이터를 나열한 자료구조로 원소들이 연속적으로 저장되는 형태의 자료형입니다. 이때 저장되는 요소들이 모두 같은 자료형일 필요는 없다(C와 같은 언어에서는 같은 자료형만 가능). 리스트는 대괄호로 감싸서 나타내며, 안에는 0개 이상의 원소가 저장될 수 있다.
listA = [A,6,t,4,a,t,h,'python']
리스트에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다.
listA = [A,6,t,4,a,t,h,'python',[1,2,3]]
listA = [A, B, C, D, E, F]
#인덱스 0, 1, 2, 3, 4, 5
print(listA[3])
print(listA[2])
a = [1, 2, 3, 4, 5]
a.append(6)
a = [1, 2, 3, 4, 5, 6]
a = [1, 2, 3]
a.insert(1, 5)
a = [1, 5, 2, 3]
m = [2, 5, 7]
n = [3, 5, 9]
k = m + n
k = [2, 5, 7, 3, 5, 9]
k +=[11, 13]
k = [2, 5, 7, 3, 5, 9, 11, 13]
a = [1,2,3]
a.extend([4,5,6])
a = [1, 2, 3, 4, 5, 6]
a = [1, 2, 3, 4, 5, 6, 7]
del a[1]
a = [1, 3, 4, 5, 6, 7]
a = [1, 2, 3, 4, 5, 6, 7]
a.remove(3)
a = [1, 2, 4, 5, 6, 7]
# 찾을 아이템이 없으면 ValueError 발생
a.remove(9)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
슬라이싱이란 리스트를 자르는 것을 의미한다. 사용법은 리스트변수[시작인덱스:종료인덱스:step] 이다. 종료인덱스의 원소는 포함되지 않고 바로 앞 원소까지만 포함된다. (-1은 맨 마지막 원소를 뜻함.)
s = ['show', 'how', 'to', 'index', 'into', 'sequences']
s[1:4]
['how', 'to', 'index']
## -1은 끝을 의미함. -2, -3... 사용 가능!
s[1:-1]
['how', 'to', 'index', 'into']
## 시작인덱스부터 끝까지 포함 = 리스트변수[시작인덱스:]
s[3:]
['index', 'into', 'sequences']
## 처음부터 특정인덱스까지 가져오기 = 리스트변수[:종료인덱스]
s[:3]
['show', 'how', 'to']
## 모든 값을 복사하여 새로운 list 만들기 = 리스트변수[:]
## 얕은 복사임!
ss = s[:]
ss = ['show', 'how', 'to', 'index', 'into', 'sequences']
for문을 사용하면 자동으로 원소를 참조할 수 있다.
sports = ['농구', '축구', '배구', '탁구', '테니스', '마라톤']
for i in sports:
print(i)
# 출력
농구
축구
배구
탁구
테니스
마라톤
enumerate() 함수를 이용하면 인덱스와 원소를 한번에 열거할 수 있다.
sports = ['농구', '축구', '배구', '탁구', '테니스', '마라톤']
for idx,value in enumerate(sports):
print(f'{idx} : {value}')
# 출력
0 : 농구
1 : 축구
2 : 배구
3 : 탁구
4 : 테니스
5 : 마라톤
sort() 함수를 이용하면 아이템을 정렬할 수 있다.
a = [1, 4, 3, 2]
a.sort()
a = [1, 2, 3, 4]
count() 함수를 이용하면 특정 아이템의 개수를 알아낼 수 있다.
a = ['blue', 'blue', 'red', 'orange', 'green', 'green', 'blue', 'gray']
blue = a.count('blue')
print(blue)