<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]
'Computer Science > 자료구조' 카테고리의 다른 글
[4.21] 02-1 배열하는 알고리즘 (2) (1) | 2021.04.21 |
---|---|
[4.20] 02-2 배열이란? -(1) (1) | 2021.04.20 |
[4.18] 01-2 반복되는 알고리즘 (마무리) (0) | 2021.04.18 |
[4.18] 01-2 반복하는 알고리즘 (0) | 2021.04.18 |
[4.18] <Do it! 자료구조와 함께 배우는 알고리즘 입문 - 파이썬> (0) | 2021.04.18 |