Computer Science/자료구조

[4.19] 02-1 자료구조와 배열(1)

토마토. 2021. 4. 19. 11:33

<Do it! 자료구조와 함께 배우는 알고리즘 입문>

2장 기본 자료구조와 배열

02-1 자료구조와 배열

 

배열 개념 알아보기

- 배열 array : 하나의 값을 저장하는 변수가 아니라 묶음 단위로 값을 저장하는 자료구조

- 배열에 객체가 저장됨(원소 element) -> index를 부여함

 

리스트와 튜플 알아보기

- 파이썬에서는 배열을 리스트list와 튜플tuple로 구현함. = data container

[1] 리스트 - 원소를 변경할 수 있는 mutable list형 객체

#리스트 생성

list01 = []
list1 = list()

#정수 범위 리스트 생성

list02 = list(range(7))
list03 = list(range(1, 5))

#원솟값 정하지 않는 - None 리스트

list04 = [None] * 5

 

[2] 튜플 - 원소에 순서를 매겨 결합한 immutable자료형

* 원소가 1개인 경우 원소 뒤에 쉼표!

#튜플 생성

tuple01 = ()
tuple02 = 1, 
tuple03 = (1,)
tuple04 = 1, 2, 3
tuple05 = (1, 2, 3)

#문자열, 리스트 등 자료형 객체를 원소로 함

#파이썬 내장함수 이용

tuple06 = tuple()

#range()를 이용한 이터러블 객체

tuple07 = tuple(range(2))

 

리스트와 튜플 풀어내기

 

unpack 언팩 - 리스트와 튜플의 원솟값을 풀어 여러 변수에 대입하는 것

#리스트 선언

x = [1, 2, 3]

a, b, c = x
print(a, b, c)

 

인덱스로 원소에 접근하기

- index : 양수 인덱수 / 음수 인덱스

인덱스식 이용하기x[-1] = x[len(x)-1]

 

슬라이스식으로 원소에 접근하기

 

슬라이스 - 리스트, 튜플 원소 일부를 연속해서 또는 일정한 간격으로 꺼내 새로운 리스트, 튜플을 만드는 것.

s[i:j] = [s[i], s[i+1], ... , s[j]]s[i:j:k] = s[i]부터 s[j]까지 k씩 건너뛰며 나열 

s[:] = 원소 모두 출력

s[:n] = n개까지 출력

s[i:] = s[i]부터 끝까지

s[-n:] = 맨 끝부터 n개 출력

s[::k] = 앞에서부터 k개씩 건너뛰며 출력

s[::-1] = 맨 끝에서부터 출력

 

* 값이 변경되면, 값을 복사하는 것이 아니라 값을 참조하는 객체의 식별 번호가 변경되는 것이다. 

 

뮤터블과 이뮤터블의 대입

- 이뮤터블 immutable : 값을 변경할 수 없는 특성 - 문자열, 튜플, 수

- 뮤터블 mutable : 값을 변경할 수 있는 특성 - 리스트, 딕셔너리, 집합

 

- 좌변에 변수 이름이 처음 나오면, 그 변수에 맞는 자료형으로 자동 선언해준다. 

(?)

- 대입식은 값이 아니라 참조하는 객체의 식별 번호를 대입한다. 

- 여러 변수에 여러 값을 한꺼번에 대입할 수 있다. 

이때 대입기호는 '=' -> 'expression' 문

- 누적대입 x += 1

 

 

 

 

자료구조의 개념 알아보기

 

- 자료구조 data structure : 데이터 단위와 데이터 자체 사이의 물리적/논리적 관계

-> 데이터를 모아 효율적으로 관리, 구조화한다. 

이때 리스트, 튜플은 자료구조 중 배열

 

len(), min(), max()

if x: x에 원소가 있으면 True 출력

 

비교 연산자로 배열의 대소/등가 관계 판단하기

[1, 2, 3] < [1, 2, 3, 4] < [1, 2, 3, 4, 5]

* 1. 배열의 원소 수가 많은 쪽이 큼

2. 원소를 하나씩 비교하여 판단

 

 

등가성 equality - 두 객체의 값이 같은가? '=='

동일성 identity - 값과 식별 번호가 같은가? 'is'

 

내포 표기 생성 - 리스트 안에서 for, if문 사용하여 새로운 리스트를 생성함. 

numbers = [1, 2, 3, 4, 5]

twise = [i * 2 for i in numbers if i % 2 == 1]