print( (lambda x,y: x + y)(10, 20) )
x
, y
는 입력값을 의미x + y
는 return
부분과 같음. ':
' 이후에 반환값 사용x
, y
입력값result = list(map(lambda i: i * 2 , [1, 2, 3]))
map(f, iterable)
의 입력 함수 f 와 반복 가능한 iterable 객체(리스트, 튜플 등)enumerate()
는 리스트, 문자열, 튜플 등이 있는 경우 순서와 리스트의 값을 함께 반환해 주는 기능my_list = ['a','b','c','d']
for i, value in enumerate(my_list):
print("순번 : ", i, " , 값 : ", value)
my_list = ['a','b','c','d']
# 인자로 받은 리스트로부터 데이터를 하나씩 가져오는 제너레이터를 리턴하는 함수
def get_dataset_generator(my_list):
result_list = []
for i in range(2):
for j in my_list:
yield (i, j) # 이 줄이 이전의 append 코드를 대체
print('>> 1 data loaded..')
dataset_generator = get_dataset_generator(my_list)
for X, y in dataset_generator:
print(X, y)
num_list = ['p1','p2', 'p3', 'p4'] #코드 시작점
if __name__ == '__main__':
pool = multiprocessing.Pool(processes = 4)
pool.map(count, num_list)
pool.close()
pool.join()
• pool = multiprocessing.Pool(processes = 4)
: 병렬 처리 시, 4개의 프로세스를 사용하도록 합니다. CPU 코어의 개수만큼 입력해 주면 최대의 효과를 볼 수 있습니다.
• pool.map(count, num_list)
: 병렬화를 시키는 함수로, count 함수에 num_list의 원소들을 하나씩 넣어 놓습니다. 여기서 num_list의 원소는 4개이므로 4개의 count 함수에 각각 하나씩 원소가 들어가게 됩니다.즉, count('p1')
, count('p2')
, count('p3')
, count('p4')
가 만들어집니다.
• pool.close()
: 일반적으로 병렬화 부분이 끝나면 나옵니다. 더 이상 pool을 통해서 새로운 작업을 추가하지 않을 때 사용합니다.
• pool.join()
: 프로세스가 종료될 때까지 대기하도록 지시하는 구문으로써 병렬처리 작업이 끝날 때까지 기다리도록 합니다.
1) Whitespace
**빈 줄 두 개**
로 구분class a():
pass
# 빈 줄
# 빈 줄
class b():
pass
# 빈 줄
# 빈 줄
class a():
def b():
pass
my_list = [1, 2, 3]; my_list[0:1]
if len(my_list) == 3: print my_list
2) 주석
3) 이름 규칙
_my_list = []
import_ = "not_import"
1. snake_case
ex) this_snake_case
2. PascalCase
ex) ThisPascalCase
3. camelCase
ex) thisCamelCase
my_list = [[1, 2], [3, 4], [5, 6]]
# 방법 1 - sum 함수
answer = sum(my_list, [])
# 방법 2 - itertools.chain
import itertools
list(itertools.chain.from_iterable(my_list))
# 방법 3 - itertools와 unpacking
import itertools
list(itertools.chain(*my_list))
# 방법 4 - list comprehension 이용
[element for array in my_list for element in array]
# 방법 5 - reduce 함수 이용 1
from functools import reduce
list(reduce(lambda x, y: x+y, my_list))
# 방법 6 - reduce 함수 이용 2
from functools import reduce
import operator
list(reduce(operator.add, my_list))
# 방법 7 - numpy 라이브러리의 flatten 이용
import numpy as np
np.array(my_list).flatten().tolist()