Algorithm Study
데이터 구조 및 분석 : Python 기초 요약 (1)
sara2601
2022. 9. 18. 12:31
본 게시글은 Edwith 문일철 교수님의 데이터 구조 및 분석: Linear Structure and Dynamic Programming을 듣고 정리한 내용입니다.
1. Python이란?
- interpreter 언어 (반대 : compiler)
최적화되지 않아도 되니 프로그램이 그때그때 실행될 수 있도록 하는 언어 - Object-oriented
- Dynamic type of variables
많은 컴파일 언어들은 Dynamic 이 아니라 변수의 형을 함께 선언. 그때그때 타입이 변할 수 있도록 지원. - Unique code structure
코드 규칙이 잘 정의되어있음.
2. List, Tuple, Dictionary
- List
- lst = [1, 2, 3, 4] , 대괄호에 정의.
- lst + lst = [1, 2, 3, 4, 1, 2, 3, 4] $\rightarrow$ 두번 연결하는 효과.
- 숫자 / 문자 함께 저장 가능. (형이 정의되어있지 않다)
- Method : list.append(), list.reverse(), list.remove(4), list.sort() 등이 있음.
- del list[0] : list 0번째 값을 제거. vs list.remove() : 해당 값을 제거 - Tuple
- 리스트와 거의 동일하나, 리스트와는 달리 내부 값을 변경할 수 없다.
- tpl = (1, 2, 3)와 같이 정의 - Dictionary
- Collection variable, 하지만 Not sequential
- key와 values의 pair로 구성되어있음.
- (key1, value1), (key2, value2), ...
- dict1 = {1: 'one', 2:'two', 3:'three' ...} 와 같이 정의
- 인덱싱 시 순서대로가 아니라 key 값에 매치되는 값을 가져옴.
- dict1.keys(), dict1.values(), dict1.items()
3. Condition and Loop Statement
3-1. If
- Condition statement.
- 조건이 참일때만 실행.
if boolean:
statement for True
elif boolean:
statement for True
else:
statement for False
3-2. for
- loop statement
- 유용한 statemet : continue와 break
- continue : 해당 조건을 만나면 다시 for loop로 돌아가기.
- break : 해당 조건을 만나게 되면 바로 loop 밖으로 나감.
for variable in sequence:
statements for loop
else:
when for-loop is finished without a break
4. Function Statement
- 다양한 변수들을 return 할 수 있음. (리턴 타입이 존재하지 않음)
- 한줄로 구성된 함수는 lambda function이라고 함.
def name(params):
statement
return var1, var2...
Ex) 일정 구간 사이의 소수를 찾는 함수 :
def isPrimeNumber(numParam1):
for itr in range(2, numParam1):
if numParam1 % itr == 0:
break
else:
return True
return False
def findPrimes(numParam1, numParam2):
numCount = 1
for itr in range(numParam1, numParam2):
if isPrimeNumber(itr):
print("%d th prime : %d" % (numCount,itr))
numCount += 1
findPrimes(5, 20)
5. Assignment and Equivalence
5-1. Assignment
- 리스트 - Nested
- 리스트의 값 중 하나를 변경하게 되면, 해당 리스트를 활용해 선언한 다른 변수의 값도 함께 바뀜.
- 이는 컴퓨터가 x, y, z를 어떻게 기억하는지에 관련되어있음.
- y는 [1, 2, 3] 상태로 미리 저장하는 것이 아니라 x를 가리키는 화살표를 저장해 놓은 것.
- reference로 가리키는 값을 비교할 수도 있고, reference 자체를 비교할 수도 있다. 따라서 equivalance는 2개 종류
5-2. Equivalence
- ==
: reference 되어있는 값들이 동일한가? ex) x == x2 (값들이 동일함을 체크) - is
: 저장장소 (reference)가 같은가의 관점에서 비교. 즉, 값은 동일할 수 있으나, 저장장소는 다를 수 있다. ex) x is x2 -> 다른곳에 저장되어있기 때문에 False. - if x[1] is y[1][1] : (where x = [1, 2, 3], y = [1, [1, 2, 3], 3]) 라면 ?
: x[1] = 2, y[1][1] = 2, 동일한 reference인가? Yes. 2는 두 값 모두에서 x[1] = 2를 가리키고 있음.