python拾遺 list物件處理失敗

2022-09-07 20:18:10 字數 1427 閱讀 7891

情形:今天在處理檔案的時候發現

list_a = [a, b, c, d]

for i in range(2):

temp = list_a

temp[2] = temp[2] + "_i"

print(temp[2])

想象輸出是:

想象輸出	| 實際輸出

c_0 | c_0

c_1 | c_0_1

c_2 | c_0_1_2

隱隱感覺那裡不對。怎麼temp起不到作用了呢?

有以下幾個問題

temp=list_a真實作用是什麼?

list複製的操作怎麼完成?

心裡隱隱有了一點答案,python入門時記得變數相當於c指標,指向不同的物件

回過頭查詢python變數的描述得知:

python變數是乙個符號名稱,它是對物件的引用或指標。將物件分配給變數後,即可使用該名稱引用該物件。但是資料本身仍然包含在物件中。

現在回答問題0:

q:temp=list_a真實作用是什麼?

r: 使temp和list_a一樣指向了同乙個list物件。

通過檢索得到了list物件的幾個複製(拷貝)方法

import copy

list_a = [1,2,3,[4,5,6],7,8]

temp = list_a

temp1 = list_a[:]

temp2 = copy.copy(list_a)

te*** = copy.deepcopy(list_a)

temp4 = list(list_a)

temp5 = list_a*1

list_a[2] = 12

print(list_a, temp, temp1, temp2, te***, temp4, temp5, sep='\n')

[1, 2, 12, [4, 5, 6, 14], 7, 8] #賦值

[1, 2, 12, [4, 5, 6, 14], 7, 8] #list_a

[1, 2, 3, [4, 5, 6, 14], 7, 8] #list_a[:]

[1, 2, 3, [4, 5, 6, 14], 7, 8] #copy.copy(list_a)

[1, 2, 3, [4, 5, 6], 7, 8] #copy.deepcopy(list_a)

[1, 2, 3, [4, 5, 6, 14], 7, 8] #list(list_a)

[1, 2, 3, [4, 5, 6, 14], 7, 8] #list_a*1

python 基本語法 拾遺

django 開發中一般見到的python 內部類,最多是在model 設計過程中。所謂內部類,就是在類內部定義的類,主要目的是為了更好的抽象現實世界。內部類的距離 汽車是個類,汽車的地盤,輪胎也可以抽象為類,將其定義到汽車類中,則形成了內部類,更好的描述汽車類,因為底盤,輪胎是汽車的一部分 一般不...

Python 並行 併發拾遺

同時做某些事情,可以互不干擾的同一時刻做幾件事情 並行 是一條高速路上的多條車道,每條車道上可能同時有車輛在跑,是同時發生的概念 同時做某些事情,但是乙個時間段內有事情要處理 併發 是眾多車輛在乙個時間內要通過路面的時間,比如下班時一大波人向食堂湧去,搶購時一大波請求向服務端湧去 1 佇列 緩衝區 ...

Python複習 拾遺 3

一維資料格式化及其處理 一維資料的表示 如果資料間有序,使用列表型別 for迴圈 無序使用集合 for迴圈 一維資料的儲存 空格分隔,不換行 缺點 資料中不能有空格 逗號分隔 缺點不能有英文逗號 所以使用文章不會出現的特殊符號 一維資料的處理 儲存檔案 列表或者集合 儲存檔案 列表或者集合 複習.s...