列表的copy方法:
s = [1,'yuyang','dba']
s1 = s.copy()
print(s1)
s1[0] = 2
print(s)
print(s1)
結果:
[1, 'yuyang', 'dba']
[1, 'yuyang', 'dba']
[2, 'yuyang', 'dba']
process finished with exit code 0
淺拷貝的兩種方式:
s = [[1,2],'yuyang','dba']
s1 = s.copy()
或者s1 = s[:]
s = [[1,2],'yuyang','dba']
s1 = s.copy()
print(s)
print(s1)
s1[0][1] = 3
print(s1)
print(s)
執行結果:
[[1, 2], 'yuyang', 'dba']
[[1, 2], 'yuyang', 'dba']
[[1, 3], 'yuyang', 'dba']
[[1, 3], 'yuyang', 'dba']
process finished with exit code 0
從上面的程式執行結果中,可以看到,在修改s1(拷貝)列表中的列表的某乙個元素的時候,修改後,s和s1都被修改了。這種情況就說明,s和s1是有關聯的。
s1 = s #兩個變數完全相等
s1[1] = 'zhangsan' #修改s1的乙個元素
print(s)
print(s1) #從列印結果中來看,是兩個都被修改了的
s2 = s[:] #s2淺拷貝s
s2[2] = 'pm' #修改s2中乙個元素
print(s)
print(s1)
print(s2) #從列印結果中看,原來兩個變數(列表沒有被修改,只有淺拷貝的s2自己修改了,這裡就體現出做淺拷貝和=的區分)
執行結果:
[[1, 2], 'zhangsan', 'dba']
[[1, 2], 'zhangsan', 'dba']
[[1, 2], 'zhangsan', 'dba']
[[1, 2], 'zhangsan', 'dba']
[[1, 2], 'zhangsan', 'pm']
process finished with exit code 0
ctrl + /
示例:
print('step1'.center(30,'-'))
a = 1
b = a
print(a)
print(b)
print('---')
print(id(a))
print(id(b))
print('step2'.center(30,'-'))
b = 2
print(a)
print(b)
print('---')
print(id(a))
print(id(b))
print('step3'.center(30,'-'))
a = [1,2]
b = a
print(a)
print(b)
print('---')
print(id(a))
print(id(b))
print('step4'.center(30,'-'))
b[1] = 3
print(a)
print(b)
print('---')
print(id(a))
print(id(b))
執行結果:
------------step1-------------11
---1767416928
1767416928
------------step2-------------12
---1767416928
1767416960
------------step3-------------
[1, 2]
[1, 2]
---1365916817416
1365916817416
------------step4-------------
[1, 3]
[1, 3]
---1365916817416
1365916817416
process finished with exit code 0
import copy
s = [[1,2],'yuyang','dba']
s1 = copy.deepcopy(s)
print(s1)
結果:
[[1, 2], 'yuyang', 'dba']
process finished with exit code 0
示例:
import copy
s = [[1,2],'yuyang','dba']
print(s)
s1 = copy.deepcopy(s) #深拷貝
s2 = s.copy() #淺拷貝
#s2 = copy.copy(s) #也是淺拷貝和上一行的執行結果一致
s1[0][1] = 3
s2[0][1] = 4
print(s)
print(s1)
print(s2)
執行結果:
[[1, 2], 'yuyang', 'dba']
[[1, 4], 'yuyang', 'dba']
[[1, 3], 'yuyang', 'dba']
[[1, 4], 'yuyang', 'dba']
process finished with exit code 0
python基礎day6 列表
1.1基本概念 1.2序列的分類 2.1列表的使用 2.2切片 步長表示選擇列表資料時兩個資料之間的間隔,預設是一可以不寫 步長不能是0但是可以是負數 in 和 not in in 用來檢查元素是否在列表中 not in 是用來檢測列表是否不在列表中 len 獲取列表中元素的個數 max 獲取列表中...
Shell基礎 day6 陣列
1,shell中的陣列分為普通陣列和關聯陣列 注意普通陣列的下標是數字,而關聯陣列的下標可以是字串。注意普通陣列對應python中的列表,關聯陣列對應python中的字典。如果想輸出普通陣列中的值 linux 可以直接執行命令echo 但是shell預設不支援關聯陣列,所以不能直接用命令echo 來...
Python學習日記day6
字串型別及操作 知識點1 使用 m n k 根據步長對字串切片 m缺失表示至開頭,n缺失表示至結尾。k為步長,擷取的字串位置為m到n 1 知識點2 轉義符號 轉義符號後的字元為原始字元 知識點3 字串操作符 x y 連線兩個字串x和y n x 或 x n 複製n次字串x x in s 如果x是s的子...