91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python開發中兩個列表之間的傳值過程介紹

發布時間:2021-09-06 19:22:14 來源:億速云 閱讀:145 作者:chen 欄目:開發技術

本篇內容主要講解“python開發中兩個列表之間的傳值過程介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python開發中兩個列表之間的傳值過程介紹”吧!

首先對于一個單層的列表

賦值如下,可以看見,如果直接使用 = 的話。其中一個變換便會引起另外一個變換,這時因為這兩個list被python解釋的時候使用的相同的地址,如下面輸出的 id()中的內容,所以此時如果想讓一個列表接收到另外一個列表的值,并且在接收到值后不會因為其中任意一個值的改變而改變,這時候就需要使用copy方法,這里可以解釋成,當使用了copy方法后,python單獨創建了找個一個內存區的地址放了新的那個值。

a = [ 1,2,3]
b = a
a[0] = a[0] +1
print(a)
print(b)
print(id(a[0]))
print(id(b[0]))
print("*"*20)
a1 = [5,6,7]
b1 = a1.copy()
a1[0] = a1[0] + 1
print(a1)
print(b1)
print(id(a1[0]))
print(id(b1[0]))

輸出

[2, 2, 3]
[2, 2, 3]
140729246982592
140729246982592
********************
[6, 6, 7]
[5, 6, 7]
140729246982720
140729246982688

對于多層列表

這也是我今天被坑的地方,注意到了第一層,但卻沒有注意到第二層,如下可以看見,雖然我們使用了copy方法,但是內層[]則沒有

a = [[1,2,4],[3,5,8],[],[]]
b = a.copy()
print("打印數組地址:")
print(id(a))
print(id(b))
print("*"*40)
print("打印內層元素地址:")
print(id(a[0]))
print(id(b[0]))
print(id(a[0][0]))
print(id(b[0][0]))
print("*"*40)
a.append(4)
a[1][0] = a[1][0] + 1
print(a)
print(b)
print(id(a[4]))

輸出

打印數組地址:
1938878979528
1938879043976
****************************************
打印內層元素地址:
1938877731208
1938877731208
140729246982560
140729246982560
****************************************
[[1, 2, 4], [4, 5, 8], [], [], 4]
[[1, 2, 4], [4, 5, 8], [], []]
140729246982656

python開發中兩個列表之間的傳值過程介紹

所以賦值操作應該為:

import copy
a = [[1,2,4],[3,5,8],[],[]]
# b = a.copy()
b =  copy.deepcopy(a)

即使用 copy.deepcopy 進行賦值操作,這時候當對a的內層元素進行操作之后,b不會跟著改變,
不過這里需要注意的是(不得不說這個設計節省內存真的很精妙),如果不更改a和b內部元素的值的話,那么a和b內部元素的值他們的地址還是相同的,只有在一方更改了自身地址內的值的時候,地址才會更改。

import copy
a = [[1,2,4],[3,5,8],[],[]]
# b = a.copy()
b =  copy.deepcopy(a)
print("打印數組地址:")
print(id(a))
print(id(b))
print("*"*40)
print("打印內層元素地址:")
print(id(a[0]))
print(id(b[0]))
print("0"*50)
print(id(a[0][0]))
print(id(b[0][0]))
print("10"*50)
print("\n")
print(a[1][0])
print(b[1][0])
print(id(a[1][0]))
print(id(b[1][0]))
print("10"*50)
print("\n")
# print("*"*40)
# a.append(4)
a[1][0] = a[1][0] + 1
#
# print(a)
# print(b)
# print(id(a[4]))
# print("\n")
print("10"*50)
print(a[1][0])
print(b[1][0])
print(id(a[1][0]))
print(id(b[1][0]))
print("10"*50)
print("\n")
b[1][0] = b[1][0] + 2
print(id(b[1][0]))

輸出

打印數組地址:
1696261290248
1696261352200
****************************************
打印內層元素地址:
1696257692040
1694368707272
00000000000000000000000000000000000000000000000000
140729133343136
140729133343136
1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

3
3
140729133343200
140729133343200
1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
4
3
140729133343232
140729133343200
1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

140729133343264

到此,相信大家對“python開發中兩個列表之間的傳值過程介紹”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遂溪县| 东乡| 深泽县| 安仁县| 泰兴市| 雅江县| 花垣县| 洪湖市| 南汇区| 收藏| 司法| 南投县| 神池县| 攀枝花市| 平乡县| 岱山县| 水城县| 伊吾县| 庆城县| 天长市| 金湖县| 崇州市| 江永县| 奎屯市| 定远县| 温州市| 西宁市| 基隆市| 白朗县| 独山县| 河南省| 吴江市| 蒲城县| 华蓥市| 方山县| 大渡口区| 嘉荫县| 新和县| 东丰县| 星子县| 北海市|