FUNDAMENTAL | 8-3. Vector Class
20210916
오늘은 lms 하고 시간이 남아서 퍼실님이 오늘 즉석으로 만든 간단한 Vector Class 예제를 풀기로 했다.
물론 나한테는 간단한 문제는 아니었지만 ㅎ 나중에 돌아봤을 때는 부디 쉽다고 느끼길!!
오늘도 화이팅✨
Vector Class
# 벡터 클래스의 멤버 변수는 어떤 자료형으로 관리해야할까?
# 리스트
class Vector:
vector = None
def __init__(self, number_list, dtype):
self.dtype = dtype
self.vector = []
# 퀴즈: 반복문과 조건문을 이용해서 number_list에 있는 원소가 dtype가 일치하면
# self.vector에 집어넣고 아니면 에러를 반환합니다.
# Hint: type() 함수를 활용합니다.
# for index in range(len(number_list))
# if(type(number_list[index])) != self.dtype)
# 파이썬에서는 리스트, 딕셔너리에 접근할 때, 가능한 인덱스 접근을 안하는 것을 권장
# for item in number_list:
for i, item in enumerate(number_list):
if type(item) != self.dtype:
print(f"{i}번째 데이터 타입이 같지 않습니다.")
raise ValueError
else:
self.vector.append(item)
# 벡터간의 연산을 위해 메소드를 정의
# 벡터에 원소를 더하고 빼는 기능을 구현
def push(self, item):
# type을 활용해서 입력 item의 종류를 검사해야 합니다.
if type(item) == self.dtye:
print(f"데이터 타입이 같지 않습니다.")
raise ValueError
else:
self.vector.append(item)
# 연산자 오버로딩 (+, -, *, /, %)
# 연산자 오버로딩은 클래스의 인스턴스들끼리 수치적 연산이 가능하도록 합니다.
def __add__(self, other):
new_number_list = []
# 반복문을 통해서 self.vector와 other,vector에 접근하고, 새로운 숫자리스트에
# 합을 채워 넣어서 새로운 벡터 인스턴스를 반환해보세요
for i in range(len(self.vector)):
new_number = self. vector[i] + other.vector[i]
new_number_list.append(new_number)
new_vec = Vector(new_number_list, self.dtype)
return new_vec
vector1 = Vector([1, 1, 1], int)
vector2 = Vector([-1, -1, -1], int)
vec3 = vector1 + vector2
print(vector1.vector)
print(type(vector1))
print(vec3)
Author And Source
이 문제에 관하여(FUNDAMENTAL | 8-3. Vector Class), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tjddus0302/FUNDAMENTAL-8-3.-Vector-Class저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)