在python中建立m x n的陣列 一般有三種方法:
但是,在使用列表乘法建立的時候會出現問題:
這說明在二維列表乘法的時候外層只是用了引用,而不是新開闢空間建立陣列. 從位址上也可以看出來,dp = [[0]*2]*2
print(dp) # [[0, 0], [0, 0]]
print(id(dp[0])) #3142462401856
print(id(dp[1])) #3142462401856
dp[0][1] = 2
print(dp) # [[0, 2], [0, 2]]
dp[0]
和dp[1]
實際上指向了同乙個物件。因此,當嘗試修改dp[0]
中的元素的時候,dp[1]
中的對應元素會同時修改。問題在於外層的乘法實際上已經是引用型。
同理,如果一維列表乘法的時候用的就是引用型別的資料,也會出現一樣的情況
class a():
def __init__(self,a=0,b=1):
self.a = a
self.b = b
def change(self,c):
self.a = c
return 1
def __repr__(self):
return "a:[{},{}]".format(self.a,self.b)
if __name__ == "__main__":
test = a(2,3)
print(test) # a:[2,3]
testlist = [test]*3
print(testlist) # [a:[2,3], a:[2,3], a:[2,3]]
test.change(5)
print(test) # a:[5,3]
print(testlist) # [a:[5,3], a:[5,3], a:[5,3]]
python動態建立執行緒 在python中建立執行緒
我有乙個指令碼,我想要乙個功能與另乙個同時執行。我看過的示例 import threading def mythread threading.thread doing something.def mythread2 threading.thread doing something.mythread ...
python在類中建立執行緒
import threading import time class mythread threading.thread def run self for i in range 3 time.sleep 1 msg i m self.name print msg def saypoem self p...
在Python的Django框架中建立和使用模版
如何使用模板系統 讓我們深入研究模板系統,你將會明白它是如何工作的。但我們暫不打算將它與先前建立的檢視結合在一起,因為我們現在的目的是了解它是如何獨立工作的。換言之,通常你會將模板和檢視一起使用,但是我們只是想突出模板系統是乙個python庫,你可以在任何地方使用它,而不僅僅是在django檢視中。...