day06 小資料池 深淺拷貝 集合

2022-08-20 20:15:12 字數 3887 閱讀 7791

小資料池——快取機制(駐留機制),只是一種規格,不會實際的開闢乙個空間

# a = 10

# b = 10

# print(a == b)

# a = 10

# b = 10

# print(a is b) is判斷基於記憶體位址進行判斷

# print(id(a))

# print(id(b))

小資料池支援的物件也是:數字,字串,布林值

乘法的時候總長度不能超過20*****

乘法的時候中文,特殊符號乘以0

小資料池的驗證方法,必須脫離**塊才能進行驗證

先執行**塊的規則,當**塊的規則不符合的時候再執行小資料池的規則(駐留機制)

# a = -2.5 * 2

# b = -2.5 * 2

# print(id(a))

# print(id(b))

# print(a is b) # true

# a = "alex你好" *2

# b = "alex你好" *2

# print(id(a))

# print(id(b))

# print(a is b) # true

**塊

乙個檔案,乙個函式,乙個類,乙個模組,終端中每一行是乙個**塊

支援的資料型別:數字,字串,布林值

數字在做乘法的時候範圍: -5——256,不能使用浮點數 *****

乘法的時候總長度不能超過20 *****

乘法的時候中文,特殊符號乘以1或0

面試必問:賦值,淺拷貝,深拷貝

賦值:

# lst = [1,2,3,[5,6,7]]

# lst1 = lst

# print(lst1)

# print(lst)

# print(lst1)

# print(lst)

淺拷貝

拷貝:複製

淺拷貝的時候,只會開闢乙個新的容器列表,其他元素使用的都是源列表中的元素

淺拷貝的時候只拷貝第一層元素

規則:修改原列表裡面的整體元素只有原列表改變,如果修改原列表裡面的整體元素裡面的元素,則兩個都改變

修改新列表裡面的整體元素只有新列表改變,如果修改新列表裡面的整體元素裡面的元素,則兩個都改變

如果只是修改原列表或者新列表的整體元素,則改變的那個列表改變,另外乙個不改變

# lst1 = lst.copy()  # 新開闢乙個空間給lst1

## print(lst[-1])

# print(lst1[-1])

## print(id(lst1[-1]))

# print(id(lst[-1]))

# 淺拷貝的時候,只會開闢乙個新的容器列表,其他元素使用的都是源列表中的元素

# lst = [1,2,3,[5,6,7]]

# lst1 = lst.copy()

# print(lst)

# print(lst1)

# lst = [1,2,3,[5,6,7]]

# lst1 = lst.copy()

# lst[3] = 567

# print(lst1)

# print(lst)

# lst = [1,2,3,4,[5,6,7,[8,9]]]

# lst1 = lst.copy() # [1,2,3,4,[5,6,7,[8,9]],10]

# print(lst)

# print(lst1)

# lst = [1,2,3,4,[5,6,7,[8,9]]]

# lst1 = lst.copy()

# lst1[-1][-1] = "56"

# print(lst) # [1,2,3,4,[5,6,7,[8,9]]]

# print(lst1) # ["56",2,3,4,[5,6,7,[8,9]]]

# lst = [[1,2,],90,6,7,[5,6]]

# lst1 = lst.copy()

# lst1[-1] = 8

# print(lst)

# print(lst1)

# dic =

# dic1 = dic.copy()

# dic["alex"][0] = "56"

# print(dic)

# print(dic1)

深拷貝

需要匯入:import copy

深拷貝開闢乙個容器空間(列表),不可變資料型別公用,可變資料型別(再次開闢乙個新的空間),空間裡的值是不可變的值進行共用的,可變的資料型別再次開闢空間

# import copy  #匯入

# lst = [1,2,3,[5,6,7]]

# lst1 = copy.deepcopy(lst) # 深拷貝

# print(lst)

# print(lst1)

# lst = [1,2,3,[5,6,7,[8,10,9]]]

# import copy

# lst1 = copy.deepcopy(lst)

# print(id(lst[-1][-1]))

# print(id(lst1[-1][-1]))

集合 ——set 無序的——不支援索引

沒有值的字典,天然去重

類似字典的鍵,可變型別不能放:列表、字典、集合不能放

# 定義集合

# s =

# print(s)

# s = 

# s.add("67") #只能新增乙個

# print(s)

# s.update("今天") # 迭代新增

# print(s)

# s = 

# print(s.pop()) # pop有返回值

# print(s)

# s.remove(3) # 指定元素刪除

# print(s)

# s.clear() # 清空 -- set() 空集合

# print(s)

先刪除再新增

查for迴圈

# for i in :

# print(i)

列印的時候是無序的,迴圈的是有序的

其他操作

交集:&

並集: |

差集: -

反交集:^

父集(超集): >

子集 : <099

frozenset() : 凍結集合

# s1 = 

# s2 =

# print(s1 & s2) # 交集

# print(s1 | s2) # 並集

# print(s1 - s2) # 差集

# print(s1 ^ s2) # 反交集

# print(s1 > s2) # 父集(超集)

# print(s1 < s2) # 子集

# print(frozenset(s1)) # 凍結集合 更不常用

# dic =

# print(dic)

面試題:

# 面試題:

# lst = [1,2,1,2,4,2,45,3,2,45,2345,]

# print(list(set(lst)))

day06 小資料池,再談編碼

今日所學 一.小資料池 二.is 和 的區別 三.編碼的問題 一.小資料池的作用 用來快取資料 可以作用的資料型別 整數 int 字串 str 布林值 bool 什麼是塊?塊 個模組,個函式,個類,甚 每 個command命令都是 個 塊.個 件也是 個 塊,eval 和exec 執 的時候也是 個...

python 小資料池 深淺拷貝 集合

1.小資料池 1.1 塊 乙個檔案,乙個函式,乙個類,乙個模組,終端中每一行 1.1.1 數字 5 256 1.1.2 字串 乘法時總長度不能超過20 1.1.3 布林值 內容相同記憶體位址相同 1.2 小資料池 1.2.1 數字 5 256 1.2.2 字串 乘法時總長度不能超過20 1.2.3 ...

小資料池和深淺拷貝

先執行 塊,不符合 塊才使用小資料池 數字支援範圍 5 256 is 和 is 判斷兩個記憶體位址是否相同 判斷兩個值是不是相等 is相同的,一定成立 相同的,is不一定成立 字串字串在做乘法的時候總長度不能超過20 自己定義的字串,長度不限制,字串必須由數字,字母,下劃線組成 特殊字元 中文除外 ...