1주차 - Python (2)

18050 단어 goormgoorm

Python Programming

Lecture 4: Data Structure

List

  • 배열: 일련의 데이터를 하나로 묶음. (파이썬에서 중요한 데이터 자료 중 하나)
  • 파이썬 배열은 대괄호로 선언. [value 1, value 2, ...]
  • 길이가 정해져 있지 않음.

List indexing

  • seq[index] 형태로 요소 하나 접근.
  • 0부터 숫자세기 시작.
  • 음수 가능. (뒤에서 부터 접근)

List Slicing

  • seq[start: end: step] 형태로 List 자르기.
  • end번째는 포함하지 않음. ex) [3:5] -> 3이상 5미만으로 생각하면 쉬움.

List Operators

a + b # 리스트 합치기.
a[0] # 리스트 내 값 바꾸기.
a * 2 # 곱하기로 리스트 반복.
'value' in List # 리스트 안에 요소가 있는지 확인. (True or False)

len(seq) # 내장 함수를 이용하여 리스트 길이 구하기.
seq.append('value') # 맨 뒤에 요소 추가, 메소드 형태
seq.extend([5,6]) # 맨 뒤에 리스트 추가, seq += [5, 6]
seq.insert(1, 1.5) # 1번째에 1.5 삽입. (index, val)

del seq[1] # 1번재 요소 삭제.
seq.remove('val') # 원하는 값을 삭제.

Reserved words & Built-in Functions & Methods

예약어

  • 일종의 문법적인 요소.
  • 괄호를 쓰지 않음.
  • 재정의 불가능.

    example) del, if ... else ..., assert

내장 함수

  • 기본 정의된 함수.
  • 별개의 함수 사용.
  • 재정의 가능.
  • 편의성 향상.

    example) len(), sum(), range()

메소드

  • 객체 내에 정의된 함수.
  • .method()으로 접근.
  • Overriding.
  • 해당 객체를 다룸

    example) .append(), insert(),.extend()

Tuple: 불변 타입 리스트(Immutable List)

  • List는 선언 시 [ ]을 사용하고, Tuple은 ( )을 사용, 문맥에 따라 괄호 생략 가능.
  • List의 연산, 인덱싱, 슬라이싱 등을 동일하게 사용.
  • 일반적으로 함수에서 2개 이상 요소를 반환할 때 사용.
  • Tuple 안의 요소는 가변 타입일 수 있음.

Packing & Unpacking

  • 패킹: 여러 데이터를 묶기.
  • 언패킹: 묶인 데이터를 풀기.
>>>t = [1,2,3,4,5]
>>>a,b,c,_,_ = t
>>>c
3

>>>a, *b, c = t # *(Asterisk)로 남는 요소를 리스트로 한번에 남기기 가능.
>>>a,b,c
(1,[2,3,4],5)

Dictionary

  • 일종의 매핑을 위한 데이터 구조.
  • Key -> Value 형태로 구현.
  • 불변(Immutable) 타입으로만 이루어져 있으면 Key로 사용 가능.
    example) {Key1 : Value1, Key2 : Value2, ...} 형태로 선언.
>>> d = {'한국어' : 0, '영어' : 1, '중국어' : 2}

>>> d.items()
dict_items([('한국어',0),('영어',1),('중국어',2)])

>>> d.keys()
dict_keys(['한국어','영어','중국어'])

>>> d.values()
dict_values([0,1,2])

Dictionary는 hash로 구현: indexing 속도가 O(1).

Set

  • Dictionary의 Key만 모여 있는 형태 -> 집합형.
  • 수학적 집합 연산자가 존재. (교집합, 합집합, 차집합, 배타적 합집합)

Lecture 5: Condition & Loop

1. Conditional Statements

  • 특정 조건이 만족될 경우 실행할 문항을 설정.
  • if [조건] - 조건을 검사하여 code block을 실행.
  • elif [조건] - 이전 조건과 맞지 않을 경우 조건을 다시 검사 및 실행.
  • else - 이전 모든 조건이 맞지 않을 경우 실행.
  • 비교 연산자와 논리 연산자를 사용할 수 있음.

1.1 Ternary operators: 삼항 연산자

  • [Value 1] if [Condition] else [Value2]
  • Condition이 참이면 Value1을 // 거짓이면 Value2를 반환.
  • 연산자로 사용.

While Statement

  • 반복해서 구문을 수행.
  • 조건을 만족하는 동안 출력.
i = 1 # 초기 값
while i < 10: # i가 10보다 작은 동안
	print(i) # i 출력
	i += 1 # i에 1씩 더함.

For Statement

  • Python의 For문은 주어진 객체를 순환하는 개념.
  • for [Element] in [Iterable]의 형태로 사용.
  • Break문으로 가장 바깥의 반복문을 나가는 것이 가능.
for i in range(100):  
    if i % 17 == 0:  
        break
  print(i) # 결과 None
  • Continue문으로 가장 바깥의 반복문의 처음으로 되돌아가기 가능.
for i in range(100):  
    if i % 17 == 0:  
        continue
  print(i) # 결과 1,2,3,4,,,16,18,19 (17의 배수 스킵).
  • Else문으로 반복을 완전히 돌았을 경우 실행되는 block 지정가능.
for i in range(10):
	print(i)
else:
	print('Loop complete')
  • Break문으로 중간에 나오게 되면 Else문이 실행되지 않음.
for i in range(10):
	print(i)
	if i > 5:
		break
else:
	print('Loop complete without break')

Lecture 6: Function

Function

  • 함수: 명령을 수행하는 일종의 기능 단위.
    1. 코드를 논리적으로 분리, 캡슐화 용도.
    2. 필요한 경우 반복적으로 호출.
    3. Return이 없는 경우 None 반환.
def [function]([parameter1],[parameter2])
	function-명령 1
	function-명령 2
	return [value]

value = function(arg1, arg2)

Variable Scope

  • 파이썬에서는 상위에 정의된 변수는 언제나 참조 가능.

  • 함수 내에 정의된 변수 이름은 그 함수 내에서만 유효.

    Global: 최상위에 선언, 다른 파일에서 접근 가능.

    Local: 함수 안에 선언, 상위 함수에서는 접근 불가.

스파게티 코드의 주원인이기에 사용하지 않는 것을 권장함.

Decorator: 꾸밈자

  • 함수 하나를 인자로 받아 같은 형태의 함수를 반환하는 함수.
  • @을 사용하여 함수를 꾸미는데 사용 가능.
  • Class를 사용할 시 Decorator에 인자 추가 가능.
def print_decorator(function):  
    def print_closure(var):  
        print("Input : ", var)  
        out = function(var)  
        print("Output : ", out)  
    return print_closure  
  
@print_decorator  
def add(var):  
    return var + 2  
  
add(10)

Recursive Function

  • 자기 자신을 호출하여 반복적으로 수행.
  • 수학의 점화식과 동일.

Type hints

  • 파이썬은 동적 타이핑 -> 다소 interface를 알기 어려움.
  • 함수에 타입 힌트 제공이 가능.
  • [function]([var]: [type], ...)의 형태
def multply_text(text: str, n: int) -> str:
	return text * n

좋은 웹페이지 즐겨찾기