자! 이제 시작이야 내 꿈을~ 내 꿈을 위한 여행 피카츄!
오늘 이 첫 게시글을 시작으로 매일 의지를 다지며 개발자 성장하도록 한다.
vector 간 덧셈 또는 뺄셈 연산을 할 때, 연산이 가능한 사이즈인지를 확인하여 가능 여부를 True 또는 False로 반환함
def vector_size_check(*vector_variables):
return all( len(vector_variables[0]) == x for x in [len(variable) for variable in vector_variables[1:]])
vector간 덧셈을 실행하여 결과를 반환함, 단 입력되는 vector의 갯수와 크기는 일정하지 않음
vector_subtraction vector간 뺄셈을 실행하여 결과를 반환함, 단 입력되는 vector의 갯수와 크기는 일정하지 않음
def vector_addition(*vector_variables):
if vector_size_check (*vector_variables) == False:
raise ArithmeticError
return [sum(t) for t in zip(*vector_variables)]
vector간 뺄셈을 실행하여 결과를 반환함, 단 입력되는 vector의 갯수와 크기는 일정하지 않음
def vector_subtraction(*vector_variables):
if vector_size_check (*vector_variables) == False:
raise ArithmeticError
return [t[0]*2-sum(t) for t in zip(*vector_variables)]
하나의 scalar 값을 vector에 곱함, 단 입력되는 vector의 크기는 일정하지 않음
def scalar_vector_product(alpha, vector_variable):
return [alpha*elements for elements in vector_variable]
matrix 간 덧셈 또는 뺄셈 연산을 할 때, 연산이 가능한 사이즈인지를 확인하여 가능 여부를 True 또는 False로 반환함
def matrix_size_check(*matrix_variables):
return all(len(matrix_variables[0]) == len(elements) for elements in matrix_variables[1:]) and (len(set(len(m) for t in matrix_variables for m in t)) == 1)
비교가 되는 n개의 matrix가 서로 동치인지 확인하여 True 또는 False를 반환함
def is_matrix_equal(*matrix_variables):
return all(all([len(set(row))==1 for row in zip(*matrix)]) for matrix in zip(*matrix_variables))
matrix간 덧셈을 실행하여 결과를 반환함, 단 입력되는 matrix의 갯수와 크기는 일정하지 않음
matrix_subtraction matrix간 뺄셈을 실행하여 결과를 반환함, 단 입력되는 matrix의 갯수와 크기는 일정하지 않음
def matrix_addition(*matrix_variables):
if matrix_size_check(*matrix_variables) == False:
raise ArithmeticError
return [[sum(row) for row in zip(*matrix)] for matrix in zip(*matrix_variables)]
matrix간 뺄셈을 실행하여 결과를 반환함, 단 입력되는 matrix의 갯수와 크기는 일정하지 않음
def matrix_subtraction(*matrix_variables):
if matrix_size_check(*matrix_variables) == False:
raise ArithmeticError
return [[row[0]*2-sum(row) for row in zip(*matrix)] for matrix in zip(*matrix_variables)]
matrix의 역행렬을 구하여 결과를 반환함, 단 입력되는 matrix의 크기는 일정하지 않음
def matrix_transpose(matrix_variable):
return [[element for element in row] for row in zip(*matrix_variable)]
나의 scalar 값을 matrix에 곱함, 단 입력되는 matrix의 크기는 일정하지 않음
def scalar_matrix_product(alpha, matrix_variable):
return [[i*alpha for i in row] for row in matrix_variable]
두 개의 matrix가 입력 되었을 경우, 두 matrix의 곱셈 연산의 가능 여부를 True 또는 False로 반환함
def is_product_availability_matrix(matrix_a, matrix_b):
return (len(matrix_a[0]) == len(matrix_b)) and len(set(len(row) for row in matrix_a))==1 and len(set(len(row) for row in matrix_b))==1
곱셈 연산이 가능한 두 개의 matrix의 곱셈을 실행하여 반환함
def matrix_product(matrix_a, matrix_b):
if is_product_availability_matrix(matrix_a, matrix_b) == False:
raise ArithmeticError
return [[sum(a*b for a,b in zip(row_a, columm_b)) for columm_b in zip(*matrix_b)] for row_a in matrix_a]
iterable 자료형 x를 입력 인수로 받으며 이 x가 모두 참이면 True, 거짓이 하나라도 있으면 False를 돌려준다.
※ 반복 가능한 자료형이란 for문으로 그 값을 출력할 수 있는 것을 의미한다. 리스트, 튜플, 문자열, 딕셔너리, 집합 등이 있다.
all([1, 2, 3]) #True
all([1, 2, 3, 0]) #False
def vector_size_check(*vector_variables):
return all((len(variable) == vector_variables[0]) for variable in (vector_variables[1:]))
matrix_x = [[1, 1], [2, 2], [3, 3]]
for m in matrix_x:
for i in m:
v=v+i
v = [i for m in matrix_x for i in m]
[1,1,2,2,3,3]
c언어 개발자인 나에게 Pythonic Code 매우 생소한 방식이었다. 여러가지 내장함수나 one line code가 어색하였지만 코딩의 간단함에 놀랐다. 이게 된다고? 하여 의문을 가지고 하나씩 배우고 있고 더이상 생소하지 않을 정도로 연습을 많이 해야겠다. 새로운 언어를 알아가는 것은 항상 흥미롭고 재미 있는 일인 것 같다 :)