printf("ho_tari\n");
파이썬 스타일 코드 II (lambda, map, asterisk, linear_algebra) 본문
<lambda.py>
# 일반적인 함수
def f(x, y):
return x + y
print(f(1, 4))
# 람다 함수(lambda)
f = lambda x, y: x + y
print(f(1, 4))
f = lambda x: x ** 2
print(f(3))
f = lambda x: x / 2
print(f(3))
<compile 결과>
<map.py>
ex = [1, 2, 3, 4, 5]
f = lambda x: x ** 2
print(list(map(f, ex)))
# 일반적인 반복문
ex = [1, 2, 3, 4, 5]
f = lambda x: x ** 2
for value in map(f, ex):
print(value)
# 리스트 컴프리헨션
ex = [1, 2, 3, 4, 5]
print([x ** 2 for x in ex])
# 일반적인 반복문
ex = [1, 2, 3, 4, 5]
f = lambda x, y: x + y
print(list(map(f, ex, ex)))
# 리스트 컴프리헨션
print([x + y for x, y in zip(ex, ex)])
#filtering 기능
print(list(map(lambda x: x ** 2 if x % 2 == 0 else x, ex))) # map() 함수
print([x ** 2 if x % 2 == 0 else x for x in ex]) # 리스트 컴프리헨션
<compile 결과>
<reduce.py>
from functools import reduce
print(reduce(lambda x, y: x + y, [1, 2, 3, 4, 5]))
<compile 결과>
<asterisk.py>
# 가변 인수
def asterisk_test(a, *args):
print(a, args)
print(type(args))
print(asterisk_test(1, 2, 3, 4, 5, 6))
# 키워드 가변 인수
def asterisk_test(a, **kargs):
print(a, kargs)
print(type(kargs))
print(asterisk_test(1, b=2, c=3, d=4, e=5, f=6))
# 별표의 언패킹 기능
def asterisk_test(a, args):
print(a, *args)
print(type(args))
print(asterisk_test(1, (2, 3, 4, 5, 6)))
def asterisk_test(a, *args):
print(a, args)
print(type(args))
print(asterisk_test(1, *(2, 3, 4, 5, 6)))
a, b, c = ([1, 2], [3, 4], [5, 6])
print(a, b, c)
data = ([1, 2], [3, 4], [5, 6])
print(*data)
for data in zip(*[[1, 2], [3, 4], [5, 6]]):
print(data)
print(type(data))
def asterisk_test(a, b, c, d,):
print(a, b, c, d)
data = {"b":1, "c":2, "d":3}
print(asterisk_test(10, **data))
<compile 결과>
<linear_algebra.py>
# 벡터의 연산
u = [2, 2]
v = [2, 3]
z = [3, 5]
result = []
for i in range(len(u)):
result.append(u[i] + v[i] + z[i])
print(result)
result = [sum(t) for t in zip(u, v, z)]
print(result)
print([t for t in zip(u, v, z)])
# 별표를 사용한 함수화
def vector_addition(*args):
return [sum(t) for t in zip(*args)]
print(vector_addition(u, v, z))
row_vectors = [[2, 2], [2, 3], [3, 5]]
print(vector_addition(*row_vectors))
# 스칼라 - 벡터 연산
u = [1, 2, 3]
v = [4, 4, 4]
alpha = 2
result = [alpha * sum(t) for t in zip(u, v)]
print(result)
# 행렬의 연산
matrix_a = [[3, 6], [4, 5]]
matrix_b = [[5, 8], [6, 7]]
result = [[sum(row) for row in zip(*t)] for t in zip(matrix_a, matrix_b)]
print(result)
print([t for t in zip(matrix_a, matrix_b)])
# 행렬의 동치
matrix_a = [[1, 1], [1, 1]]
matrix_b = [[1, 1], [1, 1]]
print(all([row[0] == value for t in zip(matrix_a, matrix_b) for row in zip(*t) for value in row]))
matrix_b = [[5, 8], [6, 7]]
print(all([all([row[0] == value for value in row]) for t in zip(matrix_a, matrix_b) for row in zip(*t)]))
print(any([False, False, False]))
print(any([False, True, False]))
print(all([False, True, True]))
print(all([True, True, True]))
print([[row[0] == value for value in row] for t in zip(matrix_a, matrix_b) for row in zip(*t)])
matrix_a = [[1, 2, 3], [4, 5, 6]]
result = [[element for element in t] for t in zip(*matrix_a)]
print(result)
# 행렬의 곱셈
matrix_a = [[1, 1, 2], [2, 1, 1]]
matrix_b = [[1, 1], [2, 1], [1, 3]]
result = [[sum(a * b for a, b in zip(row_a, column_b)) for column_b in zip(*matrix_b)] for row_a in matrix_a]
print(result)
<compile 결과>
'Python' 카테고리의 다른 글
titanic_csv 모델별 예측 (0) | 2023.10.30 |
---|---|
객체 지향 프로그래밍 (0) | 2023.10.18 |
파이썬 스타일 코드 I (join, split, list_comprehension, loop, enumerate) (0) | 2023.10.16 |
자료구조 (0) | 2023.10.16 |
문자열 (0) | 2023.10.16 |