>>alist=[range(3)]*4>>>alist[[0,1,2],[0,1,2],[0,1,2],[0,1,2]]上面初始化一個二層列表用來模擬矩陣,該矩陣式4X3的,為描述方便,這里記矩陣為A?,F在我想給A1" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

深入理解Python中的*重復運算符

系統 2151 0

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

注意的是:*重復出來的各對象具有同一個id,也就是指向在內存中同一塊地址,在對各個對象進行操作是一定要注意。

舉例來說:

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

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

現在我想給A11賦值為1,用下面的代碼:

            
alist[0][0]=1
          

那我們想要的結果應該是:

            
[[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為什么都跟著變了呢?

原因是這樣的:

文章開始的時候我們已經說過了,*重復出來的各對象具有同一個id,也就是指向在內存中同一塊地址,在對各個對象進行操作是一定要注意。

我們再初始化的時候用了重復算子"*",這個操作符在對對象進行重復操作時,會將重復的所有對象都指向同一塊內存地址,所有當你改變其中的一個值時,其他的值自然也會更新,用python的話進行解釋就是下面的命令及輸出:

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

看到了吧,id都是一樣滴,也就是說這4個list是同一個“list”。

既然這樣那我們想要模擬一個矩陣怎么辦呢,除了有專門的numpy包之外,你當然可以給上層list逐個的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]]
>>>
          

總結

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 阿坝县| 西峡县| 凤台县| 宜章县| 博罗县| 盐亭县| 霍城县| 麦盖提县| 开原市| 军事| 宣威市| 阜南县| 安康市| 高唐县| 灵台县| 绩溪县| 阿坝县| 丹东市| 古丈县| 满城县| 清镇市| 富裕县| 孝感市| 沙洋县| 阳朔县| 于田县| 定远县| 南丰县| 揭阳市| 屯昌县| 华蓥市| 自治县| 周至县| 金塔县| 达州市| 葫芦岛市| 阿荣旗| 金昌市| 乐山市| 衢州市| 南开区|