Data Structure

Lists

: 아무 타입이나 넣기 가능 + 길이가 정해져 있지 않음

  • List indexing: seq[index] 형태로 요소 하나 접근
  • List slicing: seq[start: end: step] 형태로 List 자르기 (end포함X)

 

Reserved Words VS Built-in functions VS Methods

  • 문법적 요소, 괄호X, 재정의 불가능  del, if-else, assert
  • 기본 정의된 함수, 별개 함수 사용, 재정의 가능, 편의성 향상 --> len(), range(), sum()
  • 객체 내 정의된 함수, .methods()로 접근, 해당 객체를 다룸 --> .append(), .insert(), .extend()

 

 

Tuple

  • Immutable list(불변 타입 리스트)
  • ( ) 를 사용
  • 함수에서 2개 이상 요소를 반환할 때 사용
  • Tuple안의 요소는 가변 타입일 수도 있음
  • String 타입일 때 일종의 문자 tuple로 생각 가능

 

Packing and Unpacking

  • Unpacking: * (Asterisk)로 남는 요소를 리스트로 남기기 가능


Dictionary

  • 매핑을 위한 데이터 구조 (key , value)
  • Key: 불변 타입만! + 중복이 불가능
  • Set: Dictionary의 Key만 집합처럼 모여 있는 형태 


Conditional Statements

  • if-elif-else
  • 삼항 연산자: [Value1] if [Condition] else [Value2]

 

Loop

  • While Statement: 조건을 만족하는 동안 출력
  • For Statement: 주어진 객체를 순환 (for [Element] in [Iterable])
  • break: 가장 바깥쪽의 반복문 나가기
  • continue: 가장 바깥의 반복문의 처음으로 되돌아가기 

 

Scope

  • Global scope: 최상위에 선언 == 다른 파일에서도 접근 가능
  • Local scope: 함수 안에 선언 == 상위함수에서 접근 불가 


Variable Capture

  • 상위 값이 바뀌면 하위 값이 바뀜
  • 파라미터가 없는데도 불구하고 함수내에서 바뀌어버림 --> 따라서, 파라미터를 써줘야 버그가 발생이 없어진다.
  • Closure = Factory형식
  • 파이썬에서 함수 = 일반 객체
  • 변수로 할당 가능

Decorator

  • 함수 하나를 인자로 받아  같은 형태의 함수를 반환하는 함수
  • @을 사용
  • Class를 사용할 시 Decorator에 인자 추가가 가능

Parameters

  • Function Parameters
  • Variable Length Parameter
  • Keyword Variable Length Parameter 

 



Pythonic Programming

Comprehension

  • result = [i * 2 for i in range(10)] // append
  • result = {str(i): i for i in range(10)} // key:value
  • result = {str(i) for i in range(10)} // add()
  • evens = [i for i in range(100) if i % 2 == 0] // 원하는 요소만 추가
  • result = [(i, j) for i in range(5) for j in range(i)] // 이중 for문
  • eye = [[int(i == j) for j in range(5)] for i in range(5)] // 다차원 배열 만들기

 

Generator

  • 요소를 하나씩 생성해서 반환하는 객체
  • Function에 yield를 사용하면 Generator가 된다
  • 괄호로 generator comprehension 형태로 선언 가능
  • even_generator = (i * 2 for i in range(100))

 

Lambda Function

  • 함수 이름 없이 빠르게 만들어 쓸 수 있는 함수  --> add = lambda a, b : a+b
  • seq = [6, -2, 8, 4, -5]    list(map(lambda x: x * 2, seq))  -->  [12, -4, 16, 8, -10]
  • seq = [6, -2, 8, 4, -5]    list(filter(lambda x: x > 0, seq))  -->  [6, 8, 4]

+ Recent posts