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

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

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

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

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

我們再初始化的時(shí)候用了重復(fù)算子"*",這個(gè)操作符在對對象進(jìn)行重復(fù)操作時(shí),會(huì)將重復(fù)的所有對象都指向同一塊內(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]]

這樣,我們再試試上面的賦值操作:

>>> 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)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:13個(gè)最常用的Python深度學(xué)習(xí)庫介紹python探索之BaseHTTPServer-實(shí)現(xiàn)Web服務(wù)器介紹等,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

最新評論

徐闻县| 宝山区| 台北县| 阿勒泰市| 固阳县| 富源县| 镇原县| 银川市| 环江| 汉阴县| 开鲁县| 乐昌市| 清原| 贡嘎县| 莱阳市| 雅安市| 柏乡县| 秭归县| 楚雄市| 桑植县| 都江堰市| 大方县| 临安市| 岱山县| 宿州市| 利辛县| 灯塔市| 石嘴山市| 广元市| 大邑县| 北京市| 牟定县| 大竹县| 容城县| 华容县| 大埔区| 南京市| 文安县| 伽师县| 白城市| 津南区|