Day 08 可變與不可變物件 列表與字典內建方法

2022-08-18 11:15:10 字數 2224 閱讀 3111

目錄列表的內建方法

字典內建方法

物件指向的記憶體中的值會改變,當更改這個變數的時候,還是指向原來記憶體中的值,並且在原來的記憶體值進行原地修改,並沒有開闢新的記憶體。

lis = [1]

print(id(lis)) # 167724168

print(id(lis)) # 167724168

物件所指向的記憶體中的值不能被改變,當改變這個變數的時候,原來指向的記憶體中的值不變,變數不再指向原來的值,而是開闢一塊新的記憶體,變數指向新的記憶體。

x = 10 # 定義變數就會開闢一塊新的記憶體空間存放變數

print(id(x)) # 1724673792

x = x + 1

print(id(x)) # 1733455648 x的id發生了變化,既x原來指向的記憶體中的值不變,x不再指向原來的值,而是開闢出一塊新的記憶體, x指向新的記憶體

lis = [1, 2, 3]

# 索引取值/索引修改值

lis = [0]

print(lis) # 1

# 索引切片

print(lis[0:2]) # 1 2

#成員運算in / not in

print(1 in lis) # true

print(4 not in lis) # true

# for迴圈

for i in lis:

print(1)

# 長度len

print(len(lis)) # 3

# .sort() 排序

lis = [3, 2, 1]

lis.sort()

print lis # [1, 2, 3]

# .reverse() 反轉

lis.reverse()

print(lis) # [3, 2, 1]

# .index() 獲取元素索引

print(lis.index(2)) # 1

# .clear() 清空列表

lis.clear()

print(lis) #

# .copy() 複製

lis1 = lis.copy()

print(lis1) # [1, 2, 3]

# .extend() 擴充套件列表

lis1 = [4, 5, 6]

lis.extend(lis1)

print(lis) # [1, 2, 3, 4, 5, 6]

# .remove 移除

lis.remove(3)

print(lis) # [1,2]

# .insert() 按照索引插入值(在前插入)

lis.insert(0, -1)

print(lis) # [-1, 1, 2, 3]

dic = 

# 按key取值/按key修改值/按key增加值

print(dic['a']) # 1

dic['a'] = 0

print(dic) #

dic['d'] = 4

print(dic) #

# 成員運算(比較的是key)

print('a' in dic) # true

print('e' not in dic) # true

# for迴圈(對key迴圈)

for i in dic:

print(i) # a b c

# .keys()/.value()/.items() -- 返回列表

print(dic.keys()) # 所有的key

print(dic.values()) # 所有的值

print(dic.items()) # 所有的鍵值對

# get() 取值

print(dic.get('a', 0)) # 找到了就返會a在字典中對應的值, 沒找到就返回none, 如果給定了0, 沒找到就返回0

# .update() 擴充套件字典

dic1 =

dic.update(dic1)

print(dic) #

# .setdefault() 有則不變,無則增加

dic.setdefault('a', 2)

print(dic) #

dic.setdefault('d', 4)

print(dic) #

python可變物件與不可變物件

可改變的物件 例子1def change num print function parameter id num num 100 print assigin value to num id num if name main a 10 print origin id a id a change a p...

可變物件,不可變物件

不可變物件為字串,元組等 可變物件為列表,字典,集合等。淺拷貝只是對已經存在的記憶體新增加乙個物件引用。深拷貝就是重新申請乙個新的記憶體,使這個是新物件是新記憶體位址的引用。對於可變物件引用時時經常出現。考慮以下兩段 1 l for i in range 10 num i print l 結果 2 ...

可變與不可變

元組 tuple 元組一旦被建立就不能被修改,採用逗號和圓括號 來表示。列表推導式 可變與不可變 序列型別 是否有序 是否可變 列表有序可變 元組有序 不可變 字串有序 不可變 字典無序可變 集合無序 不可變不管是可變還是不可變的序列型別 1 分片必定產生新的序列 2 號在等號右邊,必定產生新的序列...