python學習筆記07 join( ) set( )

abc.join(甲乙丙)  將abc 依次插入到甲乙丙中

甲abc乙abc丙

join( )可以把列表變成字符串

split( )可以把字符串變成列表

list在循環時不能刪除元素,因爲會改變索引,導致奇數位索引(1 3 5 7  )對應的元素會被跳過,無法被刪除

解決方案是循環時記錄下被刪除的元素到另一個列表中,然後循環記錄列表來刪除原列表的元素

描述

Python 字典 fromkeys() 函數用於創建一個新字典,以序列 seq 中元素做字典的鍵,value 爲字典所有鍵對應的初始值。不會對原字典產生影響.

語法

fromkeys() 方法語法:

dict.fromkeys(seq[, value])

注意:  當seq爲字符串時, 字符串會被切割爲單元素列表作爲字典的鍵

dict.fromkeys("王健林","王思聰")  輸出爲: {'健':"王思聰",'王':"王思聰",'林':'王思聰'}

 

set( ) 中的元素,不重複,無序,必須是可hash(int,str,tuple,bool),可以認爲set就是dic類型的數據,不保存value,只保存key.也用{}表示

set集合彙總的元素必須是可hash的,但是set本身是不可hash的,所以set自身不能嵌套存放, set可變.

set() 集合主要特徵:元素不可重複,所以可用來去重

增加

s.add( )  增加

s.update( ) 迭代增加

刪除

s.pop( )  隨機刪除

s.remove ( "刪除元素")

s.clear( ) 清空

修改

沒有索引,也沒有辦法定位一個元素,只能通過先刪除後新增的方法進行修改

查詢 set雖然不可hash但是可迭代

for el in s:

    print(el)

常用操作

frozenset( )  不可變,所以可hash,所以可以放到set( ) 裏

 

列表進行賦值操作,實際上是引用內存地址的賦值,內存中此時只有一個列表,兩個變量同時指向同一個列表,對其中的一個進行操作,兩個都會跟着改變.

 

淺拷貝 copy 創建新對象 (只拷貝第一層)

lst2 = lst1.copy() 常用copy寫法

lst2 = lst1[ : ]  字符串切片寫法

對拷貝出來的對象進行操作不會影響原對象

 

列表數據被存儲時是被存儲的"地址"(類似指針)的東西,並非數據本身,所以會存在賦值和copy的差異問題

 

深拷貝 有別於淺拷貝,對內部所有層級的內容進行拷貝

import copy

lst1.deepcopy( )

 

爲什麼有深淺拷貝?

拷貝比創建對象的過程更快

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章