def
get_fb
(num):
#初始化數列
fb_list = [1,2]
for i in range(0,num-2):
#初始化列表最後一位為0,防止報錯
fb_list[i+2] = fb_list[i] + fb_list[i+1]
return fb_list
從上我們得到了乙個固定位數的斐波那契數列,由此引申出乙個問題:求斐波那契數列第n項的值
以下是對上述問題的幾種解法:
- 遞迴函式
def
get_value
(n):
if n <= 1:
return
1return get_value(n-1) + get_value(n-2)
遞迴可以解決當n值不大的情況,當n值過大時,由於多次重複計算,導致執行速度太低
def
momo
(func):
cache = {}
defwarp
(*args):
if args not
in cache:
cache[args] = func(*args)
return cache[args]
return warp
@momo
defget_value
(n):
if n <= 1:
return
1return get_value(n-1) + get_value(n-2)
將a = [『abc01』,』abc02』,』abc03』,』abc04』]中所有』abc』替換為』000』
#map + 列表生成式 + lambda表示式
a = list(map(lambda x:x.replace('abc','000'),[i for i in a]))
def
change_str
(c):
b =
for i in c:
i = i.replace('abc','000')
return b
change_str(a)
當對同一資料在需要進行過濾時,我們一般採用以下幾種方法
在對類進行大量例項化時,__dict__物件自身占用了1024位元組的記憶體
__dict__是動態為物件增加屬性
為了減少記憶體的使用,採用預先宣告屬性的方法__solts__
class
person:
__solts__ = ['uid','name','***']
def__init__
(self, uid, name, move, ***='男')
self.eat = eat
self.speak = speak
self.move = move
例項化乙個person類
p1 = person('01','jack')
p1.eat = 'yes'
此時不能動態新增方法,會報錯,但是節省了記憶體空間 python核心裝飾 python核心 裝飾器
ython有著強大的表示式語法和函式特性,其中乙個我的最愛便是裝飾器。在設計模式中,裝飾器能夠在不使用子類的情況下動態的修改函式 方法或類的功能。當你需要擴充套件某個函式的功能卻不想直接修改這個函式的時候,裝飾器就可以派上用場了。實現裝飾器模式有很多種方法,但是python通過強大的語法支援來讓這個...
linux核心 使用的 gnu c 擴充套件
gnu cc是乙個功能非常強大的跨平台c編譯器,它對c語言提供了很多擴充套件,這些擴充套件對優化 目標 布局 更安全的檢查等方面提供了很強的支援。本文把支援gnu擴充套件的c語言稱為gnu c。linux核心 使用了大量的gnu c擴充套件,以至於能夠編譯linux核心的唯一編譯器是gnu cc,以...
php的核心擴充套件怎麼寫
方法 一 用c去寫php的核心擴充套件,然後php就像呼叫原生函式一樣呼叫 舉例如下 php crypto.c include stdio.h include php.h include php crypto.h include netpayclient.h php function signord...