python集合深淺copy

來源:互聯網
上載者:User

標籤:比較   規則   ati   text   lin   epc   高效能   列表和元組   迭代   

01昨天內容回顧

 代碼塊:由一個檔案,一個函數,一個模組,一個類,互動模式下每一行都是一個代碼塊

Is == id:id()是查詢記憶體位址,==比較兩邊的值,is是比較兩邊的記憶體位址。

小資料池:

在記憶體中建立一個池,提前存放了-5~256的整數,一定規則的字串,後續程式中,如果設定的變數指向的是小資料內容,那就不會再記憶體中重新建立。

1.節省記憶體

2.提高效能和效率。

小資料池和代碼塊的關係。

同一個代碼塊:python在執行時,遇到了初始化對象,他會將這個變數和數值放在一個字典中,再次遇到他會從這字典中尋找。

不同代碼塊:python執行中,直接從小資料池中尋找。滿足條件id相同。

編碼:

Str》bytes:encode

Bytes》str:decode

 

 

 

 

02作業講解

 

 

 

 

 

 

03 基礎資料類型補充

元祖:如果元祖中只有一個資料,且沒有逗號,則還‘元祖‘與裡面的資料的資料類型相同。Print()將會得到是屬於元素的類型 ,得到的不是元祖。

Tu1=(1)

Print(tu1)得到的是元素

Tu1=(1,)

Tu2=(‘alex’,)

Tu3=(【1,2,3】,)

 

列表,元組,字串互相轉換

列表和元群組轉換為字串則必須依靠join函數

 

列表:列表和列表可以相加

L1=【1,2,3】

L2=【‘alex’,‘wusir’】

L3=l1+l3

Print()

 

在迴圈一個列表時,如果對列表中的某些元素進行刪除,

那麼次元素後面的所有元素就會前進一位,他們索引位置 就會變,所以不能在迴圈的時候,進行增刪

Eg:# for i in range(len(li)-1,-1,-1):
#     if i %2==1:
#         li.pop(i)
# print(li)

 

 

字典

Dic1=dic.fromkeys([1,2,3],’alex’)

Print(dic1)

 

在迴圈一個字典時,不能改變字典的大小(就是不能增減)。

 

資料類型的轉換。

Int str bool 轉換

Str《》types

Str《》list:字串轉換列表時用split,而list轉換為字串時,必須list全是字串。

 

 

 

04集合set

增:有add。update#update:迭代著增加
set1.update(‘A‘)print(set1)
set1.update(‘老師‘)print(set1)
set1.update([1,2,3])print(set1)

刪:

set1 = {‘alex‘,‘wusir‘,‘ritian‘,‘egon‘,‘barry‘}
 
set1.remove(‘alex‘)  # 刪除一個元素print(set1)
 
set1.pop()  # 隨機刪除一個元素print(set1)
 
set1.clear()  # 清空集合print(set1)
del set1  # 刪除集合print(set1)

 

 

 

Set:

{‘name’,‘alex’,1,2,3}

集合要求裡面的元素必須是不可變的資料類型,但本身是可以變得,集合裡面的元素不重複,無序。

主要用途:

  1. 去重,
  2. 關係測試。

List去重

li=[1,2,2,3,4,6,1,3,]
# set1=set(li)
# li=list(set1)
# # print(set1)
# print(li)
集合比如#
 set1=set({1,2,3})
# set2=set1
# print(id(set1),id(set2))
地址是不一樣的。
 
 
 
  1. 關係測試

交集&intersection

並集|union

差集—difference

反交集^ 或者 symmetric_difference

子集和超集

 

05   淺度copy

 

對於淺copy來說,第一層建立的是新的記憶體位址,而從第二層開始,指向的都是同一個記憶體位址,所以,對於第二層以及更深的層數來說,保持一致性。

 

l1 = [1,2,3,[‘barry‘,‘alex‘]]

l2 = l1.copy()

print(l1,id(l1))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2380296895816

print(l2,id(l2))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2380296895048

l1[1] = 222print(l1,id(l1))  # [1, 222, 3, [‘barry‘, ‘alex‘]] 2593038941128print(l2,id(l2))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2593038941896

 l1[3][0] = ‘wusir‘

print(l1,id(l1[3]))  # [1, 2, 3, [‘wusir‘, ‘alex‘]] 1732315659016

print(l2,id(l2[3]))  # [1, 2, 3, [‘wusir‘, ‘alex‘]] 1732315659016

 

 

05 深度copy

對於深copy來說,兩個是完全獨立的,改變任意一個的任何元素(無論多少層),另一個絕對不改變

import copy

l1 = [1,2,3,[‘barry‘,‘alex‘]]

l2 = copy.deepcopy(l1)

 

print(l1,id(l1))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2915377167816

print(l2,id(l2))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2915377167048

 

l1[1] = 222

print(l1,id(l1))  # [1, 222, 3, [‘barry‘, ‘alex‘]] 2915377167816

print(l2,id(l2))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2915377167048

 

l1[3][0] = ‘wusir‘

print(l1,id(l1[3]))  # [1, 222, 3, [‘wusir‘, ‘alex‘]] 2915377167240

print(l2,id(l2[3]))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2915377167304

python集合深淺copy

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.