国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Python兩個list互換,兩種不同的操作結果有差異,原因是什么呢?

瀏覽:86日期:2022-06-30 10:15:28

問題描述

a=[1,1,1,1,1,1,1,1,1]b=[0,0,0,0,0,0,0,0,0]c=[1,1,1,1,1,0,0,0,0]def xor(a,b): for i in range(len(a)):a[i]=a[i]^b[i] return a;

第一種操作是這樣的,和預期不太相符:

b=xor(a,c)b,a=a,b

a=[0, 0, 0, 0, 0, 1, 1, 1, 1] | b=[0, 0, 0, 0, 0, 1, 1, 1, 1]

第二種加入一個中間值來暫時存儲list b ,結果是這樣的:

mid=bb=xor(a,c)a=mid

a=[0, 0, 0, 0, 0, 0, 0, 0, 0] | b=[0, 0, 0, 0, 0, 1, 1, 1, 1]

問題解答

回答1:

其實不太明白你說得'結果有差異'是指什么, 你這個輸出不是很正常的么?xor(a,c), 將列表a的每個元素, 和列表c的每個元素取異或結果, 導致列表變成結果a變成[0, 0, 0, 0, 0, 1, 1, 1, 1]xor函數在修改列表a的同時, 還順帶return了一個列表a并且賦值給b, 這樣子 b和a不是同一樣的列表么?

而你下面的'中間變量', 只是存了b之前的值而已, 如果你想說用第一種方法達到第二種方法的效果, 那你可以不要賦值給b, 直接替換

xor(a,c)b,a=a,bprint a, b回答2:

第一種,是把b值改變,再a,b交換第二種,定義一個新值mid,再改變b值,再把mid賦值給a

這結果是對的,有什么問題?

回答3:

def xor(a,b): for i in range(len(a)):a[i]=a[i]^b[i] return a;

這個函數,實質就是返回了 a,中間可能有修改, 然后

print id(a)print id(b)b=xor(a,c) # <-- 就是 b==aprint id(a) == id(b) # <-- 調換之后應該相等了b,a=a,b # <-- 這里兩個都是指向同一個東西了

如果只是兩個互換:

a, b = b, a # <-- 這樣就好了

標簽: Python 編程
主站蜘蛛池模板: 国产亚洲欧美精品久久久 | 日韩午夜视频在线观看 | 国产大乳孕妇喷奶水在线观看 | 精品无码一区在线观看 | 亚洲第一免费播放区 | 国产亚洲综合在线 | 亚洲自拍中文 | 一区二区三区免费在线观看 | 欧美一区二区三区不卡 | 日韩一中文字幕 | 国产成人一区二区三区高清 | 日韩特级| 国产精品久久久久久影院 | 久久手机精品视频 | 99re5久久在热线播放 | 日韩在线视频线视频免费网站 | 韩国黄色一级毛片 | 日韩精品免费看 | 国产性自爱拍偷在在线播放 | 91资源在线播放 | 亚洲成a人片在线观看 欧美 | 欧美一区二区视频在线观看 | 99久久精品国产国产毛片 | 欧美日韩生活片 | 欧美jizzhd精品欧美另类 | 欧美日韩亚洲一区二区三区在线观看 | 日韩欧美一区二区三区在线 | 国产精品亚洲片在线va | 亚洲性xo| 久久99久久精品免费思思6 | 国产精品亚洲玖玖玖在线靠爱 | 国产精品三级 | 精品久久成人免费第三区 | 国产成人一区二区三区在线视频 | 中文字幕乱码中文乱码综合 | 怡红院最新免费全部视频 | 国产日韩精品欧美一区喷 | 欧美一级www片免费观看 | 精品视频自拍 | 日韩精品视频美在线精品视频 | 97精品国产高清在线看入口 |