我有一堂課:
class Data:
def __init__(self, data: dict):
self.data = data
我想執行諸如
d = {'a': [1, 2, 3], 'b':[4, 5, 6]}
objA = Data(d)
objA.data['a'] 2 # this should return element-wise addition=> [3, 4, 5]
objA.data['a'] objA.data['b'] # this should return element-wise addition=> [5, 7, 9]
objA.data['a'] > 2 # this should return element-wise comparison=> [False, False, True]
如何多載算術和比較運算子以執行串列的元素操作?
uj5u.com熱心網友回復:
你可以使用這個:
class MathList:
def __init__(self, data: list):
self.data = data
def __add__(self, n):
return [x n for x in self.data]
def __sub__(self, n):
return [x - n for x in self.data]
def __mul__(self, n):
return [x * n for x in self.data]
def __truediv__(self, n):
return [x / n for x in self.data]
def __eq__(self, n):
return [x == n for x in self.data]
def __ne__(self, n):
return [x != n for x in self.data]
def __lt__(self, n):
return [x < n for x in self.data]
def __le__(self, n):
return [x <= n for x in self.data]
def __gt__(self, n):
return [x > n for x in self.data]
def __ge__(self, n):
return [x >= n for x in self.data]
class Data:
def __init__(self, data: dict):
self.data = {k: MathList(v) for k, v in data.items()}
d = Data({
'a': [1, 2, 3],
'b': [4, 5, 6]
})
# Arithmatic operations
print(d.data['a'] 2) # Output: [3, 4, 5]
print(d.data['b'] - 2) # Output: [2, 3, 4]
print(d.data['a'] * 2) # Output: [2, 4, 6]
print(d.data['b'] / 2) # Output: [2.0, 2.5, 3.5]
# Boolean operations
print(d.data['a'] == 2) # Output: [False, True, False]
print(d.data['b'] != 4) # Output: [False, True, True]
print(d.data['a'] < 3) # Output: [True, True, False]
print(d.data['b'] <= 4) # Output: [True, False, False]
print(d.data['a'] > 2) # Output: [False, False, True]
print(d.data['b'] >= 5) # Output: [False, True, True]
這會創建一個名為的新類MathList,并執行您想要的操作
編輯:你可能想看看 numpy,也可以這樣做
uj5u.com熱心網友回復:
我已將其定義data為list
class Data:
def __init__(self, data: list):
self.data = data
def __add__(self, x):
self.data.append(x)
return self
def __sub__(self, x):
self.data.remove(x)
return self
def __lt__(self, x):
return [item < x for item in self.data]
def __le__(self, x):
return [item <= x for item in self.data]
def __eq__(self, x):
return [item == x for item in self.data]
def __ne__(self, x):
return [item != x for item in self.data]
def __gt__(self, x):
return [item > x for item in self.data]
def __ge__(self, x):
return [item >= x for item in self.data]
def __repr__(self):
return str(self.data)
objA = Data([1, 2, 3])
objB = Data([4, 5, 6])
objA = objA 7
print(objA) # Output: [1, 2, 3, 7]
objA = objA - 7
print(objA) # Output: [1, 2, 3]
print(objA < 2) # Output: [True, False, False]
print(objA <= 2) # Output: [True, True, False]
print(objA == 2) # Output: [False, True, False]
print(objA != 2) # Output: [True, False, True]
print(objA < 2) # Output: [True, False, False]
print(objA >= 2) # Output: [False, True, True]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/496218.html
下一篇:咨詢注冊Mysql
