好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > python開發中兩個list之間傳值示例

python開發中兩個list之間傳值示例

熱門標簽:鶴壁手機自動外呼系統違法嗎 銀川電話機器人電話 高德地圖標注收入咋樣 B52系統電梯外呼顯示E7 沈陽防封電銷電話卡 怎么辦理400客服電話 地圖標注多個 萊蕪電信外呼系統 企業微信地圖標注

由于改代碼因為這個問題卡了半個小時特此記錄

首先對于一個單層的列表

賦值如下,可以看見,如果直接使用 = 的話。其中一個變換便會引起另外一個變換,這時因為這兩個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

所以賦值操作應該為:

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開發中兩個list之間傳值示例的詳細內容,更多關于python中list列表兩表傳值的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 詳解python函數傳參傳遞dict/list/set等類型的問題
  • Python參數傳遞機制傳值和傳引用原理詳解
  • Python 列表(List)操作方法詳解
  • Python中list列表的一些進階使用方法介紹

標簽:葫蘆島 安慶 三亞 湘西 銀川 呼倫貝爾 呼倫貝爾 烏魯木齊

巨人網絡通訊聲明:本文標題《python開發中兩個list之間傳值示例》,本文關鍵詞  python,開發,中,兩個,list,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python開發中兩個list之間傳值示例》相關的同類信息!
  • 本頁收集關于python開發中兩個list之間傳值示例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 性欧美GAy粗又长1069| 日本漫画之漫画无彩翼漫画| 白袜玩奴| doi姿势| 人妻熟女一区二区AⅤ水野| 国产日韩欧美在线一区二区三区| 中文字幕在线乱人伦| 闺蜜们放荡交换H肉辣文| 18美女腿打开无遮挡| labstillalive所有侵犯画面| chinese军人gayxx受| 亚洲 欧美 动漫 中文字幕| 午夜电影av| 99久久国产精品免费制片 | 国产综合福利| zozozo欧美zozozo| 夜色直播.yy77tv| 性色生活片未删减版资源| 欧美性三级| 24小时日本免费高清视频在线观看 | 九色PORNY丨首页?入口网页| 一级毛片免费视频网站| 美人诱受多汁水肉np| 国产自产视频| 女教师大荫蒂毛茸茸视频| 91美女视频| 做做受视频播放试看30分钟| 亚洲国产成人精品女人| 韩国理伦片在线观看视频手机版| 超h高h肉h文教室生理课| 亚洲美女高清一区二区三区| 爆?喷水?洗澡?网站| 巜波多野结衣私人教师| 亚洲h视频在线观看| 高压监狱免费高清原声满天星美版| JiZZJiZZ亚洲日本少妇| 中文字幕一区二区三区556624小时福利入口| 曰韩在线视频| 成人午夜国产福到在线不卡| 好好的曰comwww| 老公不知情JUX-518HD中字高清`|