[제로베이스] CH3. 자료구조 - 리스트

정해성·2023년 6월 20일
0

제로베이스

목록 보기
14/36
post-thumbnail

자료 구조

여러 개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라고 하고, 이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다.

자료구조는 각각의 컨테이너 자료형에 따라서 차이가 있으며, 파이썬의 대표적인 컨테이너 자료형으로는 리스트(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]]

원소 다루기

  • 인덱스 : 원소가 몇 번째에 있는지 가리키는 번호, 인덱스 번호는 0부터 시작하는게 원칙.
listA = [A, B, C, D, E, F]
#인덱스   0, 1, 2, 3, 4, 5

print(listA[3])
print(listA[2])
  • append : 원소 마지막에 추가
a = [1, 2, 3, 4, 5]
a.append(6)

a = [1, 2, 3, 4, 5, 6]
  • insert : 리스트.index(입력할index, 값)
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]
  • 리스트 합치기(extend메소드) : 리스트.extend(추가할리스트)
a = [1,2,3]
a.extend([4,5,6])

a = [1, 2, 3, 4, 5, 6]
  • 원소 삭제(del) : del 리스트[인덱스]
a = [1, 2, 3, 4, 5, 6, 7]
del a[1]

a = [1, 3, 4, 5, 6, 7]
  • 원소 삭제(remove) : 리스트.remove(원소)
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)
profile
코린이 공부중

0개의 댓글