當前位置:首頁 » 編程語言 » python改變列表的值

python改變列表的值

發布時間: 2023-06-29 07:25:00

python高手求教,兩個List怎麼只改變一個List中元素的值不引起另一個List的變化

import
List2=.deep(List1)

這樣賦值,List2初始值和List1一樣,因為是深度復制List1中的元素,所有深層元素都引用的是不同的對象,List1的任何改變不會影響List2

Ⅱ python 為什麼我修改列表一個元素會導致所有元素都被修改

sta是所有ser類對象公有的類變數,在一個對象中對其進行修改當然會影響到其他對象中sta的內容。在構造函數中加上self.sta=[]可將sta變為每個對象獨立持有的成員變數。

Ⅲ python用for遍歷列表時不能修改列表值嗎

首先,可以肯定的是,for 循環遍歷時可以修改列表值。
那麼問題出在哪?在for 循環中的賦值語句magician='the Great' + magician,這個語句並沒有改變列表元素,在for magician in magicians中,magician 只是一個得到了列表元素的值的臨時變數,修改這個臨時變數並不會影響的列表裡的值。
原代碼相當於:magician =magicians[i], magician ='theGreat'+magician, 很明顯,這里沒有影響到列表元素,而是只改變了臨時變數。
可以使用以下代碼:
for i in range(len(magicians)):
magicians[i] = 'the Great' + magicians[i]

Ⅳ 關於python列表的屬性傳遞

Python分為可變類型和不可變類型,一般tuple,string,number等類型不可變,其他如list等是可變類型
如果你用=來賦值可變類型的話就會出現你這種情況,這種情況叫做「淺拷貝」。要實現變其中一個其他不變就不能簡單地用=來賦值,要用到一種叫做「深拷貝」的東西。
深拷貝有幾種方法:
1.
deep
import

l
=
[]
x
=
.deep(l)
x.append(6)
print
l,
x
2.
slice
l
=
[]
x
=
l[:]
x.append(6)
print
l,
x

Ⅳ Python的賦值與復制

對於Python的初學者,在對象的使用過程中,由於對變數的賦值和對象的復制中的概念模糊,導致程序出錯。

例如,下面的代碼:

輸出結果為:

a = [6,2,3,4,5],
b = [6,2,3,4,5],
c = [1,2,3,4,5]
a等於b?True
a等於c?True
a是b?True
a是c? False

可以看到,a,b, c所指向的對象的值都相同(a==b為True). a和b都是代表同一個對象(a is b為True)。當我們通過變數b對該列表進行修改時,由於a也指向該列表,所以當列印a,b時,我們得到相同的值。 而a和c則是代表不同的對象(a is c為False),所以修改b所指向得列表不會改變c梭子鄉的列表的值.

在Python中,所有的變數都代表了對象,即便是簡單的數字類型(int, float, bool),也是以對象的形式存在的。我們看下面的代碼:

輸出結果是:

a==b為True
a is b為True

可見,a, b都是指向同一個對象。接下來,進行下面的操作,

輸出結果是:

a = 1, b = 2
a is b為False

與前面的列表不同,當我們對b做修改時,實際上是給b賦予了一個新生成的對象,對數值類型來說,所有的數值運算都會創建一個數值對象,並將這個對象指定給變數。因此,a與b指向了不同的對象,數值也不同。

再回過頭來看列表對象,

我們知道,b是與a指向同一對象的變數,使用b對該對象進行修改,與使用a對該對象進行修改,效果是完全一樣的。如果我們需要需要一個與a完全相同又與a相互獨立的列表,那麼就需要復制這個對象,也就是新建一個內容和源對象相同的對象。

對於列表來說,最簡單的復制方法是通過下標索引的方式創建新的列表:

對於各種數據類型通用的對象拷貝復制,我們可以使用python內建的模塊。

對於復雜對象(如嵌套列表)的復制,則需要注意區分淺拷貝和深拷貝。我們來看下面的代碼:

得到的結果是:
a[0] is b[0]為 True
a[0] is c[0]為 False
a = [[-1, 2, 3], [4, 5, 6]]
b = [[-1, 2, 3], [7, 8, 9]]
c = [[1, 2, 3], [4, 5, 6]]
a[1] is b[1]為False

從上面的代碼我們可以看到,函數為淺拷貝,只拷貝了對象的外層,而對象內部所包含的對象仍然指向原有的對象。而deep則為深拷貝,對象內部的對象也進行了復制。

以上我們對變數的賦值和對象的復製做了更加深入的分析。在具體的使用中,我們需要根據具體來決定使用賦值、淺拷貝、深拷貝。

熱點內容
壓縮機三轉子 發布:2025-02-11 15:45:54 瀏覽:827
linux操作系統shell 發布:2025-02-11 15:45:53 瀏覽:338
安卓模擬器如何選擇安裝 發布:2025-02-11 15:34:26 瀏覽:176
安卓手機和華為哪個好用 發布:2025-02-11 15:32:11 瀏覽:555
大眾車載dv設置密碼多少 發布:2025-02-11 15:26:06 瀏覽:413
sqlserver連接超時 發布:2025-02-11 15:24:25 瀏覽:741
求三端類引擎可編譯的源碼 發布:2025-02-11 15:20:01 瀏覽:467
sql2000質疑 發布:2025-02-11 14:52:21 瀏覽:521
se94se頁面訪問升級版 發布:2025-02-11 14:49:42 瀏覽:805
java是否包含字元串 發布:2025-02-11 14:45:24 瀏覽:52