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를 가리키고 있음.