是否可以撰寫一個函式,以便在每次呼叫時保存資料;例如-以下函式接受兩個引數 x 和 y;其中 x 是資料,y 是陣列大小。第一次呼叫該函式,它將創建 y 維陣列,用 x 值填充第一個位置,在第二次呼叫中,它將填充陣列的第二個位置并繼續,當其中至少有 2 個值時,它將回傳一個平均值大批。陣列大小是固定的,如果呼叫函式超過 y 次,它將洗掉第一個資料(FIFO)。
def storedata(x,y):
return z
uj5u.com熱心網友回復:
您可以使用global variables將資料保存在其中并在函式之間呼叫它們。
看看這個頁面:在函式呼叫之間保存資料的pythonic方式是什么?如果您想使用類和屬性解決方案,也許可以解決您的問題。
uj5u.com熱心網友回復:
當你想存盤資料時,你應該使用一個類。
下面給出了一個小例子,但是請在網上查找教程和示例,以充分了解 python 中類和 OOP 的作業。
class Storedata:
def __init__(self, x, y):
self.arr = []
self.max_arr_size = y
self.add_data(x)
def add_data(self, x):
if len(self.arr) < self.max_arr_size:
self.arr.append(x)
def __call__(self):
return sum(self.arr)/len(self.arr)
storedata = Storedata(3, 5)
print(storedata.arr)
>>> [3]
print( storedata() )
>>> 3.0
storedata.add_data(5)
print( storedata() )
>>> 4.0
uj5u.com熱心網友回復:
感謝大家的解決方案。使用類是一個好方法,但我想我正在尋找以下代碼。
def storedata(x, y):
if not hasattr(storedata, 'z'):
storedata.z = np.zeros(y, dtype=float)
storedata.z = np.roll(storedata.z, 1)
storedata.z[0] = x
storedata.z[storedata.z == 0] = np.nan
return storedata.z, np.nanmean(storedata.z)
for i in range(1, 11):
print(storedata(x=i, y=10))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/412399.html
標籤:
