生成器和深淺拷貝

2021-09-23 20:35:38 字數 620 閱讀 4622

生成器不是把資料全部算出來,用乙個算乙個,大量節省資源空間

生成器推到式:(將列表推到式的改為())

message = (i for i in range(5))

print(message)

生成器斐波拉契數枚舉例:

def teat(n):

a = 0

b = 1

i = 0

while i深淺拷貝

需要匯入拷貝模組

import copy

淺拷貝:copy.copy

深拷貝:copy.deepcopy

淺拷貝只拷貝一層,深拷貝拷貝多層

可以理解為深拷貝拷貝的是位址,淺拷貝拷貝的是值

淺拷貝:拷貝不可變型別不會給拷貝的物件開闢新的記憶體空間,而只是拷貝了這個物件的引用。對可變型別的第一層物件進行拷貝,對拷貝的物件會開闢新的記憶體空間進行儲存,子物件不進行拷貝。

深拷貝:不可變型別進行深拷貝如果子物件沒有可變型別則不會進行拷貝,而只是拷貝了這個物件的引用,否則會對該物件到最後乙個可變型別的每一層物件就行拷貝, 對每一層拷貝的物件都會開闢新的記憶體空間進行儲存。可變型別進行深拷貝會對該物件到最後乙個可變型別的每一層物件就行拷貝, 對每一層拷貝的物件都會開闢新的記憶體空間進行儲存。

深淺拷貝和列表生成器

淺拷貝 拷貝不可變型別不會給拷貝的物件開闢新的記憶體空間,而只是拷貝了這個物件的引用。對可變型別的第一層物件進行拷貝,對拷貝的物件會開闢新的記憶體空間進行儲存,子物件不進行拷貝。深拷貝 不可變型別進行深拷貝如果子物件沒有可變型別則不會進行拷貝,而只是拷貝了這個物件的引用,否則會對該物件到最後乙個可變...

迭代和生成器

列表迭代的本質 iter 函式返回乙個迭代器,然後可以呼叫迭代器上的next方法 arr 1,2,3,4,5 arr iterator arr.iter print arr iterator.next print next arr iterator 乙個典型的迭代器實現。例子來自 流暢的python...

python 生成器作用 Python生成器

生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...