五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

python開發(fā)中兩個(gè)list之間傳值示例

發(fā)布日期:2022-01-27 13:32 | 文章來(lái)源:站長(zhǎng)之家

由于改代碼因?yàn)檫@個(gè)問(wèn)題卡了半個(gè)小時(shí)特此記錄

首先對(duì)于一個(gè)單層的列表

賦值如下,可以看見,如果直接使用 = 的話。其中一個(gè)變換便會(huì)引起另外一個(gè)變換,這時(shí)因?yàn)檫@兩個(gè)list被python解釋的時(shí)候使用的相同的地址,如下面輸出的 id()中的內(nèi)容,所以此時(shí)如果想讓一個(gè)列表接收到另外一個(gè)列表的值,并且在接收到值后不會(huì)因?yàn)槠渲腥我庖粋€(gè)值的改變而改變,這時(shí)候就需要使用copy方法,這里可以解釋成,當(dāng)使用了copy方法后,python單獨(dú)創(chuàng)建了找個(gè)一個(gè)內(nèi)存區(qū)的地址放了新的那個(gè)值。

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

對(duì)于多層列表

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

a = [[1,2,4],[3,5,8],[],[]]
b = a.copy()
print("打印數(shù)組地址:")
print(id(a))
print(id(b))
print("*"*40)
print("打印內(nèi)層元素地址:")
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]))

輸出

打印數(shù)組地址:
1938878979528
1938879043976
****************************************
打印內(nèi)層元素地址:
1938877731208
1938877731208
140729246982560
140729246982560
****************************************
[[1, 2, 4], [4, 5, 8], [], [], 4]
[[1, 2, 4], [4, 5, 8], [], []]
140729246982656

所以賦值操作應(yīng)該為:

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

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

import copy
a = [[1,2,4],[3,5,8],[],[]]
# b = a.copy()
b =  copy.deepcopy(a)
print("打印數(shù)組地址:")
print(id(a))
print(id(b))
print("*"*40)
print("打印內(nèi)層元素地址:")
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]))

輸出

打印數(shù)組地址:
1696261290248
1696261352200
****************************************
打印內(nèi)層元素地址:
1696257692040
1694368707272
00000000000000000000000000000000000000000000000000
140729133343136
140729133343136
1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
3
3
140729133343200
140729133343200
1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
4
3
140729133343232
140729133343200
1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
140729133343264

以上就是python開發(fā)中兩個(gè)list之間傳值示例的詳細(xì)內(nèi)容,更多關(guān)于python中l(wèi)ist列表兩表傳值的資料請(qǐng)關(guān)注本站其它相關(guān)文章!

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問(wèn)服務(wù)

1對(duì)1客戶咨詢顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部