printf("ho_tari\n");

파이썬 스타일 코드 II (lambda, map, asterisk, linear_algebra) 본문

Python

파이썬 스타일 코드 II (lambda, map, asterisk, linear_algebra)

호타리 2023. 10. 16. 16:35

<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