ETH官方钱包

切換
舊版
前往
大廳
主題

Python筆記Day5-指定陣列

萬念俱灰的人最強 | 2019-07-25 23:48:44 | 巴幣 2 | 人氣 90

當我們在使用List 時,很有可能會出現其它需求要使用

例如:
a = [1,2,3]
你可能會認為我就很簡單的
b = a 賦值就好了
但是事實上,在Python中,我們這樣子做,並不會真正在創建一個B出來
而是a和b同時都指向[1,2,3],這就好像[1,2,3],這個東西同時有a和b這兩個名字。


a = [1,2,3]
b = a
print(a)    # 兩者輸出是相同的
print(b)    # 都是[1,2,3]
a.append(4) # 當我們對a進行修改後
print(a)    # 你可以看到兩者的內容仍然是相同的
print(b)    # 說明兩者之間確實只是 List [1,2,3]叫不同的名字而已

我們看看執行結果

[1, 2, 3]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4]

那我們要怎麼避免這樣子指向同一物件的的情況呢?

import copy
a = [
1,2,3]
aa = copy.deepcopy(a)
ab = copy.copy(a)

print(a)# [1, 2, 3]
print(aa)# [1, 2, 3]
print(ab)# [1, 2, 3]
# 一開始的值都是一樣的
a[
1] = 99

print(a)#[1, 99, 3]
print(aa)#[1, 2, 3]
print(ab)#[1, 2, 3]
但是實際上真的是這樣嗎? 我們明天再說






創作回應

MistHeart-小圓廚模式
前幾個禮拜寫專題才遇到這個問題,後來自己解決了,第一次寫python真的學到很多
2019-07-26 03:00:27
萬念俱灰的人最強
真的 當自己從0開始學習會學到很多
2019-07-26 10:37:58

更多創作