Do it! 자료구조와 함께 배우는 알고리즘 입문(파이썬) :: DAY 03 - 2
02-2 배열이란?
스캔 (scan)
스캔이란 배열 원소를 하나씩 차례로 주목하여 살펴보는 방식
for i in range(1, len(a)):
if a[i] > maximum:
maximum = a[i]
주석과 자료형의 힌트
from typing import Any, Sequence
def max_of(a: Sequence) -> Any:
Any는 제약이 없는 임의의 자료형을 의미
Sequence는 시퀀스형을 의미
시퀀스형에는 리스트형, 바이트 배열형, 튜플형, 바이트열형이 있다
max_of() 함수는 건네받는 매개변수 a의 자료형은 Sequence이며 반환하는 자료형은 임의의 자료형인 Any
이 부분을 사용해 본적이 없어서 잘 모르겠다
스프링에서 annotation을 사용해 봤고 비슷하다고 생각은 되는데 파이썬에서 한 번도 사용해 본 적이 없어서 잘 모르겠다
특히 sequence형이 뭔지 정확히 따로 찾아봐야할 것 같다
함수의 어노테이션
파이썬에서는 자료형 선언없이 변수나 함수를 자유롭게 사용할 수 있지만, 명시적으로 해석하기 어려운 경우가 있다
그래서 등장한 기능이 어노테이션(annotation, 주석 달기)
강제성은 없고 함수 어노테이션은 함수의 매개변수와 반환 값을 나타내는 역할을 한다
재사용할 수 있는 모듈 작석
모듈이란 하나의 스크립트 프로그램이다
확장자(. py)를 포함하지 않는 파일의 이름 자체를 모듈 이름으로 사용한다
모듈은 프로그램이 처음 임포트 되는 시점에 그 모듈 객체가 생성되면서 초기화되는 구조
모듈 객체에는 __name__, __loader__, __package__, ___spec__, __path__, __file__ 등이 있다
이 모듈 객체라는 것에 대해서도 따로 찾아보자
따로따로 생성한 리스트, 튜플의 동일성 판단
list01 = [1, 2, 3]
list02 = [1, 3, 2]
print(list01 is list02) # False
print(list01 == list02) # False
list02.sort()
print(list01 == list02) # True
리스트, 튜플의 대입
리스트를 2개 선언하여 서로 대입해도 원소 자체는 복사되지 않는다.
대입에서 복사되는 것은 값이 아니라 참조하는 곳이기 때문이다
list01 = [1, 2, 3]
list02 = [1, 3, 2]
list01 = list02
print(list01 is list02) # True
이렇게 list 2는 list 1을 참조하고 있다
즉 list 2와 list 1은 같은 리스트를 참조
따라서 list 1의 값이 변경되면 list 2의 값도 변경된다