python.集合转列表_Python基础数据类型:元组、列表、字典、集合
你好,我是goldsunC。
讓我們一起進步吧!
元組、列表、字典、集合
元組和列表是Python語言中非常重要的一部分內容,它們是Python中除了字符串以外的另兩種序列結構,幾乎在任何地方都少不了它們的使用。而字典是非常具有Python語言特色的一種類型,它與列表類似,但是其中元素的順序變的無關緊要。
1 列表
1.1 列表的創建
列表可以由[]或者list()創建,它可以由==零個==或者==多個==元素組成,元素之間用逗號隔開,整個列表要被方括號所包裹:
同時,除了我們自己創建列表之外,我們還可以用list()將其它形式的數據類型轉換成列表類型:
1.2 列表的處理
1.2.1 列表分割
在==Python學習筆記==(二)中我寫了關于字符串的一些相關處理,其中有一個split()函數可以將字符串進行切割,相似的,這個函數也可以對列表進行切割:
1.2.2 提取元素
和字符串類似的,通過偏移位從列表中提取對應位置的元素:
引用的偏移位對于待訪問列表必須有效——該位置的元素在訪問前已經正確賦值,當指定的偏移位小于起始位置或者大于末尾位置時,會產生異常。
同時,也可以指定范圍并使用切片提取元素:
1.2.3 修改元素
我們不但可以通過偏移位訪問某元素,還可以通過賦值對它進行修改:
使用此種方式無法修改列表內字符串中的指定字符,因為字符串本身是不可變的。而列表是可變的,因此你可以修改列表中的元素個數,以及元素的值。
1.3 列表的概念延伸
列表可以包含各種類型的元素,也包括其它的列表,同時也可以對一個有內層列表,并可以在列表內有對象時可以無限層引用,如下例:
1.4 相關的列表處理函數
| append(element) | 將element添加至列表尾部(其可以是任何元素) |
| extend(list) ? ?or ?+= | 將list合并至原列表(注意與append區分) |
| insert(offset,element) | 在offset處插入element(偏移位可以溢出) |
| remove(element) | 刪除原列表中的所有element |
| pop(offset)(none==-1) | 獲取并刪除offset處的元素 |
| index(element) | 查詢element在列表中的偏移位 |
| count(element) | 記錄element在列表中出現的總次數 |
| sort() | 對列表進行排序同時改變原列表內容(數字升序或者字母升序),降序則在()中寫入reverse=Ture |
| sorted() | 返回排好序的列表副本,原列表內容不變 |
| len(list) | 獲取list的長度 |
上邊是我整理的一些對列表進行處理的函數,其實還有幾個常用函數,因為其引用方式和上邊那些稍有不同,因為我單獨拿出并舉例。
1.5 使用del刪除指定位置的元素
#創建列表當列表中的一個元素被刪除后,位于它后面的元素會自動往前移動填補空出的位置,且列表長度減1。
1.6 使用join()將列表轉換為字符串
#創建一個列表1.7 使用in判斷值是否存在于列表
#創建一個列表1.8 使用=賦值,使用copy()復制
在這里我覺得有必要解釋一下,在Python語言中,所有數據都是以==對象==的形式存在的,Python中的變量僅僅是一個名字,賦值操作并不會實際復制值,它只是為數據對象取了一個名字而已,名字是對對象的引用而不是對象本身。
下面舉個例子更好理解:
如上例所示,a對b的賦值僅僅是值從新在a所指對象的身上貼上了b的標簽,賦值后a和b實際指向的是一個對象,因此無論是通過a還是通過b來修改其所指對象的內容,其結果都會作用于雙方。
如果想將一個列表的值復制到另一個新的列表中,可以采用以下三種方法:
列表copy()函數
list()轉換函數
列表分片[:]
使用這三種方法產生的b、c、d都是a的復制,它們是自身帶有值得新對象,與原始的a所指向的對象沒有任何關聯,此時改變任何一個對象的值都不影響其它對象。
2 元組
其實元組和列表是非常相像的一種數據類型,其最大的不同便是:元組是不可變的。這意味著元組一旦被定義,將無法再進行增加、刪除或者修改元素等操作。相對來說,元組就像一個常量列表。因為元組與列表非常相似,接下來只介紹一下元組的創建以及和列表對比的一些特點。
2.1 元組和列表各組特點
在許多地方都可以用元組代替列表,但元組的方法函數比列表要少很多:比如沒有append()、insert()等函數,因為創建了元組之后便無法修改了,因此沒有這些函數。那既然列表更加靈活,為什么不在所有地方都應用列表呢?有以下幾點原因:
1.元組占用的空間較小2.你不會意外修改元組的值以便防止程序發生雪崩式的漏洞3.可以將元組作為字典的鍵4.命名元組可以作為對象的替代5.函數的參數是以元組的形式傳遞的
2.2 元組的創建
創建一個空元組用():
>>>????empty_tuple?=()>>>????empty_tuple
()
創建一個或者多個元素的元組時,每一個元素后面都要跟著一個逗號,即使只包含一個元素也不能省略,當創建的元組包含的元素大于1時,最后一個元素后面的逗號可以省略:
'ChangKangning',在Python的解釋器中輸出元組時總會自動添加一對圓括號,而我們并不需要這樣做-因為定義元組真正靠的是每個元素的后綴-“逗號”,不過你愿意加一對圓括號也可以,這樣也會使得程序更加的清晰。
可以一口氣將元組賦值給多個變量:
同時,利用tuple()函數也可以將其他類型的數據轉換成元組:
3 字典
字典與列表類似,但是其中的元素順序變的無關緊要,因為字典并不是靠偏移位來訪問的,每個元素不必被編相應的順序序號。取而代之,每個元素擁有與之對應的互不相同的鍵(key),需要通過鍵來訪問元素,鍵通常是字符串,但它還可以是Python中其他任意的不可變類型:布爾型、浮點型、元組、字符串,以及其他一些相關類型。而字典本身是可變的,因此你可以增加、刪除或修改其中的鍵值對。
3.1 字典的創建
3.1.1 使用{}創建字典
使用大括號{}將一系列以逗號隔開的鍵值對(key:value)包裹起來即可進行字典的創建:
>>>????empty_dict
{}
>>>????a_dict??={'Myname':'ChangKangning',
??????????????'Yourname':'XXX'}
>>>????a_dict
{'Myname':?'ChangKangning',?'Yourname':?'XXX'}
Python允許在列表、元組、或者字典的最后一個元素后面添加逗號,這不會產生任何問題。此外,在括號之間輸入鍵值對來創建字典時并不強制要求縮進。
3.1.2 使用dict()轉換為字典
可以對任何包含雙值子序列的序列使用dict()將其轉化為字典:
3.2 字典的處理
3.2.1 使用方括號[]添加或者修改元素
我們已經知道字典是由一對對的鍵值對組成,而向字典中添加元素非常簡單,只需要指定該元素的鍵并賦予相應的值即可。如果該鍵已經有值,其將被新值取代,如果沒有此鍵,此鍵值對將被加入字典。
因為我們引用的是字典中鍵值對的鍵,因此我們需要知道,每個字典中包含的鍵必須保證互不相同。
3.2.2 一些常用的字典處理函數
| update(other_dict) | 將other_dict中的鍵值對復制到原字典 |
| del dict['key'] | 刪除dict中key的元素(類似列表中的del) |
| clear() | 將字典中的所有元素刪除 |
| ’key‘ in dict | 判斷key是否在字典中 |
| keys() | 獲取字典中的所有鍵 |
| values() | 獲取字典中的所有值 |
| items() | 獲取字典中的所有鍵值對 |
3.2.3 特別的處理方法
與列表類似,同樣的使用方括號[]來獲取元素。
在對字典的操作中,只需要指定字典名字和鍵即可得到對應的值:
注意,如果在操作的字典中不包含指定的鍵,則系統會報錯而并不是返回空,而有兩種方法可以避免這種情況發生:
1. 用3.2.2表中的in判斷此鍵是否存在。
2. 使用字典函數get(),你在使用時需要指定字典名、鍵、以及一個可選值。如果鍵存在,會返回其對應值。如果不存在,則返回這個可選值。
如下:
'C':與列表一樣,對字典內容信息的修改會反映到所有與之相關聯的變量名上,若想避免此種情況,則還是需要用copy()函數將字典復制到一個新字典中。
4 集合
對于元組和列表我們知道,元組就像是不會改變的列表,其性質非常相似,而對于字典與集合來講,集合就像舍棄了值,僅剩下鍵的字典一樣。集合里邊的元素不允許重復,同時也沒有順序。如果你僅僅向知道某一個元素是否存在而不關心其他的東西,使用集合是一個非常好的選擇。
4.1 集合的創建
4.1.1 使用set()函數創建集合
我們可以使用set()函數創建一個集合,或者用大括號將一系列以逗號隔開的值包裹起來創建集合。如下所示:
>>>????empty_set
set()
>>>????a_set???={1,2,3,4,5}
>>>????a_set
{1,2,3,4,5}????#雖然此時返回的值看似有序,但一定注意集合是無序的!!!
注意,空集合的創建并不是之間使用一個大括號就行了,大括號是用來創建字典的,為了避免與空字典的重復,解釋器輸出的空集合是set(),這樣規定沒有什么特殊原因,僅僅是因為字典的出現比較早吧。
4.1.2 使用set()將其他類型轉換為集合
這里沒什么好解釋的,直接上例子:
'ning')4.2 集合的處理
前邊已經說過,集合里面的元素是無序的、唯一的,因此我們最常用的功能是判斷元素是否存在于目標集合。
4.2.1 使用in判斷測試值是否存在
#我們先建立一個字典,字典里邊的值為集合4.2.2 集合相關處理函數
| intersection(set) | 獲取原集合與set的交集 |
| & | 同上 |
| union(set) | 獲取原集合與set的并集 |
| | | 同上 |
| difference(set) | 獲取原集合與set的差集 |
| - | 同上 |
| symmetric_difference(set) | 獲取原集合與set的異或集(僅在兩個集合中出現一次) |
| ^ | 同上 |
| issubset(set) | 判斷原集合是否為set的子集 |
| <= | 同上 |
| < | 判斷真子集 |
| issuperset(set) | 判斷原集合是否為set的超集 |
| > = | 同上 |
| > | 判斷真超集 |
總結
到此為止,關于元組、列表、字典、集合的常用相關基礎知識已經全部敲出來了,說實話這些東西看的時候可能一個小時就能看完,但是要敲出來得需要一天,不過在敲的過程中確實加強了很多,畢竟那些舉得例子大多需要在解釋器里運行一下,有時候出個錯也能更掌握相關知識點,這篇文章對我自己肯定有幫助,希望也能幫到看到的你。
???end???
走在路上
goldsunC
總結
以上是生活随笔為你收集整理的python.集合转列表_Python基础数据类型:元组、列表、字典、集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python日期函数_python 时间
- 下一篇: python 循环添加array_Pyt