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

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

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

系統 2080 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元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 花莲市| 泗洪县| 安义县| 阜阳市| 时尚| 额济纳旗| 大关县| 大荔县| 石渠县| 永福县| 鄂托克前旗| 东城区| 玉门市| 郁南县| 手机| 三门县| 永德县| 柳林县| 临高县| 武穴市| 晋城| 临清市| 儋州市| 尤溪县| 泸定县| 永城市| 扶绥县| 五莲县| 揭西县| 陆河县| 雅江县| 纳雍县| 丹巴县| 桐乡市| 九江市| 洱源县| 文成县| 司法| 宿迁市| 康定县| 中宁县|