淺拷貝:拷貝不可變型別不會給拷貝的物件開闢新的記憶體空間,而只是拷貝了這個物件的引用。對可變型別的第一層物件進行拷貝,對拷貝的物件會開闢新的記憶體空間進行儲存,子物件不進行拷貝。
深拷貝:不可變型別進行深拷貝如果子物件沒有可變型別則不會進行拷貝,而只是拷貝了這個物件的引用,否則會對該物件到最後乙個可變型別的每一層物件就行拷貝, 對每一層拷貝的物件都會開闢新的記憶體空間進行儲存
列表推導式
[i for i in range(1, 101)]
[i for i in range(1, 101) if i % 2== 0]
[i*j for i in range(1, 10) for j in range(1, 10)]
列表推導式很強大,但是直接生成列表,那麼當列表中的元素特別多的時候,記憶體的占有就特別的誇張
生成器斐波拉契數枚舉例:
def teat
(n):
a =0 b =
1 i =
0while iv = a
a,b = b,a+b
yeild v
i +=
1teat(10
)g =
next
(v)print
(g)
print
("複雜的資料結構中的賦值"
)list1 =[1
,2,3
,4,5
,6]list2 = list1
print(id
(list1)
) # 42367240
print(id
(list2)
) # 42367240
list1.
('new item'
)print
(list1) # [1,
2,3,
4,5,
6,'new item'
]print
(list2) # [1,
2,3,
4,5,
6,'new item'
]print(id
(list1)
) # 42367240
print(id
(list2)
) # 42367240
生成器和深淺拷貝
生成器不是把資料全部算出來,用乙個算乙個,大量節省資源空間 生成器推到式 將列表推到式的改為 message i for i in range 5 print message 生成器斐波拉契數枚舉例 def teat n a 0 b 1 i 0 while i深淺拷貝 需要匯入拷貝模組 import...
列表生成器
coding utf 8 並不會一次性的將所有的結果計算出來,存放到記憶體當中,而是在使用某一些值得時候,才會去動態計算結果並返回,而沒有使用的值是不會計算的。print xrange 1,10 print range 1,10 generator x x for x in xrange 1,4 p...
列表生成式,列表生成器
coding utf 8 列表生成式是快速生成乙個列表一些公式 numbers for x in range 0,101 print numbers 要放入列表資料 簡單的表示式 1 表示式 2 x for x in range 0,101 for 迴圈遍歷出來的值,放入列表中 numbers x ...