본문 바로가기

부스트캠프 AI Tech/Python

Pythonic code

Split & join

str.split('sep') # sep 기준으로 split 없을 시 공백 기준
"joiner".join(sequential data) # data를 joiner와 함께 concat

List Comprehension

result = [i for i in range(10)]

word_1 = "hello"
word_2 = "world!"
result = [i+j for i in word_1 for j in word_2] # nested for loop
result = [[i+j for i in word_1] for j in word_2] # word_2가 먼저 loop 돎

Enumerate & Zip

alist = ['a1', 'a2', 'a3']
blist = ['b1', 'b2', 'b3']

for a, b in zip(alist, blist):
	print(a, b)
    
[c for c in zip(alist, blist)] # tuple로 추출

Lambda

f = (lambda x,y : x + y)
f(1,4)

PEP 8에서는 lambda의 사용을 권장하지 않음

  • 이해하기 어려움
  • docstring 지원 x
  • 익명 함수 출현
  • 그래도 많이 씀

Map

ex [1,2,3,4,5]
f = lambda x : x ** 2
list(map(f,ex)) # lambda 함수 가능
  • 가능하다면 list comprehension으로 구현

reduce

from functools import reduce
reduce(lambda x, y: x + y, [1,2,3,4,5])
  • 앞 함수의 return이 다시 input으로 들어감

Iterable object

cities = ["A", "B", "C"]
memory_addr = iter(cities) # memory에 loading 되지 않음, linked list 형태
next(memory_addr) # "A"
next(memory_addr) # "B"
next(memory_addr) # "C"

Generator

  • memory 용량 절약
  • Generator Comprehension
    • list comprehension과 같은 형태
      gen_com = (n*n for n in range(50)) # type = generator
  • list type, 큰 데이터, 파일 데이터 처리 시 generator 사용할 것

Fucntion passing argument

  • Keyword argument - parameter의 변수명을 사용하여 argument를 넘김
  • Default argument - parameter의 기본 값 설정

Variable-length asterisk

  • 개수가 정해지지 않은 parameter
  • Asterisk(*) 기호를 사용
  • 입력 값은 tuple 형태

Keyword Variable-length asterisk

  • Asterisk 두개 (**) 사용
  • 입력 값은 dict type
  • keyword = value 형태
  • 순서 지키기

Asterisk - unpacking a container

  • tuple, list에 들어 있는 값을 unpacking
  • 두 개(**)쓰면 dict type을 key=value 형태로 unpacking

'부스트캠프 AI Tech > Python' 카테고리의 다른 글

Module  (0) 2022.01.21
Object Oriented Programming  (0) 2022.01.21
Data Structure  (0) 2022.01.19
String  (0) 2022.01.19
Conditionals and loops  (0) 2022.01.18