最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解Python中的*重復(fù)運(yùn)算符

 更新時(shí)間:2017年10月28日 16:48:44   投稿:mengwei  
這篇文章主要介紹了深入理解Python中的*重復(fù)運(yùn)算符,小編覺得還是挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。

在python中有個(gè)特殊的符號(hào)“*”,可以用做數(shù)值運(yùn)算的乘法算子,也是用作對(duì)象的重復(fù)算子,但在作為重復(fù)算子使用時(shí)一定要注意

注意的是:*重復(fù)出來的各對(duì)象具有同一個(gè)id,也就是指向在內(nèi)存中同一塊地址,在對(duì)各個(gè)對(duì)象進(jìn)行操作是一定要注意。

舉例來說:

>>> alist = [range(3)]*4
>>> alist
[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]

上面初始化一個(gè)二層列表用來模擬矩陣,該矩陣式4X3的,為描述方便,這里記矩陣為A。

現(xiàn)在我想給A11賦值為1,用下面的代碼:

alist[0][0]=1

那我們想要的結(jié)果應(yīng)該是:

[[1, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]

可是很不幸,我們得到的是:

[[1, 1, 2], [1, 1, 2], [1, 1, 2], [1, 1, 2]]

這是怎么回事呢,為什么給A21賦值,其他的Ai1為什么都跟著變了呢?

原因是這樣的:

文章開始的時(shí)候我們已經(jīng)說過了,*重復(fù)出來的各對(duì)象具有同一個(gè)id,也就是指向在內(nèi)存中同一塊地址,在對(duì)各個(gè)對(duì)象進(jìn)行操作是一定要注意。

我們?cè)俪跏蓟臅r(shí)候用了重復(fù)算子"*",這個(gè)操作符在對(duì)對(duì)象進(jìn)行重復(fù)操作時(shí),會(huì)將重復(fù)的所有對(duì)象都指向同一塊內(nèi)存地址,所有當(dāng)你改變其中的一個(gè)值時(shí),其他的值自然也會(huì)更新,用python的話進(jìn)行解釋就是下面的命令及輸出:

>>> id(alist[0])
18858192
>>> id(alist[1])
18858192
>>> id(alist[2])
18858192
>>> id(alist[3])
18858192
>>>

看到了吧,id都是一樣滴,也就是說這4個(gè)list是同一個(gè)“l(fā)ist”。

既然這樣那我們想要模擬一個(gè)矩陣怎么辦呢,除了有專門的numpy包之外,你當(dāng)然可以給上層list逐個(gè)的append新的list,例如:

>>> blist=[]
>>> for i in range(4):
  blist.append([j for j in range(3)])
>>> blist
[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]

這樣,我們?cè)僭囋嚿厦娴馁x值操作:

>>> blist[0][0]=1
>>> blist
[[1, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]
>>>

總結(jié)

以上就是本文關(guān)于深入理解Python中的*重復(fù)運(yùn)算符的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:13個(gè)最常用的Python深度學(xué)習(xí)庫介紹、python探索之BaseHTTPServer-實(shí)現(xiàn)Web服務(wù)器介紹等,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

最新評(píng)論

当雄县| 长丰县| 山东| 尚义县| 福海县| 绥芬河市| 宁阳县| 栾城县| 星子县| 灌阳县| 长治县| 广饶县| 宝丰县| 永州市| 卢龙县| 贵州省| 衢州市| 大悟县| 普定县| 宜春市| 高雄市| 东台市| 新安县| 进贤县| 兴安县| 宽甸| 吉林省| 景德镇市| 明水县| 舟山市| 循化| 平凉市| 简阳市| 崇州市| 武川县| 城固县| 油尖旺区| 连州市| 天全县| 宜兴市| 屏南县|