알고리즘

Do it! 자료구조와 함께 배우는 알고리즘 입문(파이썬) :: DAY 03 - 2

gitofjy 2022. 11. 2. 23:44

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의 값도 변경된다

728x90