Python中列表,元組,字典和集合的區(qū)別及它們之間的轉(zhuǎn)換
前排提示:元祖是錯(cuò)誤的寫法(帶錯(cuò)別字),部分文章寫為元祖系誤,正確的說(shuō)法為元組。
首先了解序列。
序列是具有先后關(guān)系的一組元素,它是一維元素向量,元素類型可以不同。
元素間由序號(hào)引導(dǎo),通過(guò)下標(biāo)訪問序列的特定元素。
序列是一個(gè)基類類型,元組、列表是序列類型的一種擴(kuò)展,繼承序列類型的全部通用操作。
(1)集合set
集合就是我們數(shù)學(xué)學(xué)的集合,集合最好的應(yīng)用是去重——集合類型所有元素?zé)o重復(fù)。可以利用{}或set()建立集合。
注:print默認(rèn)以換行符\n作為結(jié)尾,end=" "則使print以空格字符作為結(jié)尾。
(2)元組tuple
元組和列表在結(jié)構(gòu)上沒有什么區(qū)別(因?yàn)樵M、列表是序列類型的一種擴(kuò)展),唯一的差異在于元組是只讀的,創(chuàng)建后不能修改。
于是,有應(yīng)用場(chǎng)景——數(shù)據(jù)保護(hù):如果不希望數(shù)據(jù)被程序所改變,轉(zhuǎn)換為元組類型。
元組使用小括號(hào)()或tuple()創(chuàng)建??梢允褂没虿皇褂眯±ㄌ?hào)。
(3)列表list
什么是列表呢?我覺得列表就是我們?nèi)粘I钪薪?jīng)常見到的清單。
比如,統(tǒng)計(jì)過(guò)去一周我們買過(guò)的東西,把這些東西列出來(lái),就是清單。
由于我們買一種東西可能不止一次,所以清單中是允許有重復(fù)項(xiàng)的。
如果我們擴(kuò)大清單的范圍,統(tǒng)計(jì)我們過(guò)去一周所有的花費(fèi)情況,那么這也是一個(gè)清單,但這個(gè)清單里會(huì)有類別不同的項(xiàng),比如我們買東西是一種花費(fèi),交水電費(fèi)也是一種花費(fèi),這些項(xiàng)的類型是可以使不同的。
python的列表跟清單的道理是一樣的,特點(diǎn)就是:可重復(fù),類型可不同。類型不同也是跟數(shù)組最本質(zhì)的區(qū)別了。
列表創(chuàng)建后可以隨意被修改(元組不可以)。python里的列表用[ ]或list()創(chuàng)建:
(4)字典dict
最后一個(gè)是字典。字典類型是“映射”的體現(xiàn)。
字典是鍵值對(duì)的集合,鍵值對(duì)之間無(wú)序。
采用大括號(hào){}和dict()創(chuàng)建,鍵值對(duì)用冒號(hào):表示。
字典最大的價(jià)值是查詢,通過(guò)鍵,查找值。
下面是一些小例子
1、列表元組轉(zhuǎn)其他
# 列表轉(zhuǎn)集合(去重) list1 = [6, 7, 7, 8, 8, 9] set(list1) # {6, 7, 8, 9} ? #兩個(gè)列表轉(zhuǎn)字典 list1 = ['key1','key2','key3'] list2 = ['1','2','3'] dict(zip(list1,list2)) # {'key1': '1', 'key2': '2', 'key3': '3'} ? #嵌套列表轉(zhuǎn)字典 list3 = [['key1','value1'],['key2','value2'],['key3','value3']] dict(list3) # {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'} ? # 列表、元組轉(zhuǎn)字符串 list2 = ['a', 'a', 'b'] ''.join(list2) # 'aab' ? tup1 = ('a', 'a', 'b') ''.join(tup1) # 'aab
2、字典轉(zhuǎn)其他
# 字典轉(zhuǎn)換為字符串 dic1 = {'a':1,'b':2} str(dic1) # "{'a': 1, 'b': 2}" ? # 字典key和value互轉(zhuǎn) dic2 = {'a': 1, 'b': 2, 'c': 3} {value:key for key, value in a_dict.items()} # {1: 'a', 2: 'b', 3: 'c'}
3、字符串轉(zhuǎn)其他
# 字符串轉(zhuǎn)列表 s = 'aabbcc' list(s) # ['a', 'a', 'b', 'b', 'c', 'c'] ? # 字符串轉(zhuǎn)元組 tuple(s) # ('a', 'a', 'b', 'b', 'c', 'c') ? # 字符串轉(zhuǎn)集合 set(s) # {'a', 'b', 'c'} ? # 字符串轉(zhuǎn)字典 dic2 = eval("{'name':'ljq', 'age':24}") ? # 切分字符串 a = 'a b c' a.split(' ') # ['a', 'b', 'c']
字典的分割、合并
分割:
base = {'A':1, 'B':2, 'C':3, 'D':4, 'E':5} subkey = ['C', 'E'] subdict=dict([(key, base[key]) for key in subkey]) print(subdict)——{'C': 3, 'E': 5}
合并:
方式一:
d1={'user':'root','pwd':'1234'} d2={'ip':'127.0.0.1','port':8080} d3=dict(d1, **d2) print(d3)
方式二:
d1={'user':'root','pwd':'1234'} d2={'ip':'127.0.0.1','port':8080} d3={} for k,v in d1.items(): ? ? d3[k] = v for k,v in d2.items(): ? ? d3[k] = v print(d3)
list分割、合并
a=[1,2,3,4,5,6] b=['a','b','c','d'] print(a+b) ? a=[1,2,3,4,5,6] b=['a','b','c','d'] a+=b print(a) ? a=[1,2,3,4,5,6] b=['a','b','c','d'] a.extend(b) print(a) ? a=[1,2,3,4,5,6] b=['a','b','c','d'] a[0:0]=b print(a) ? li = ['a','b','c'] res1=';'.join(li) res2=''.join(res1).split(';')
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python對(duì)Excel進(jìn)行讀寫操作
學(xué)習(xí)Python的過(guò)程中,我們會(huì)遇到Excel的讀寫問題。這時(shí),我們可以使用xlwt模塊將數(shù)據(jù)寫入Excel表格中,使用xlrd模塊從Excel中讀取數(shù)據(jù)。下面我們介紹如何實(shí)現(xiàn)使用Python對(duì)Excel進(jìn)行讀寫操作。2017-03-03Python實(shí)現(xiàn)二分查找與bisect模塊詳解
二分查找又叫折半查找,二分查找應(yīng)該屬于減治技術(shù)的成功應(yīng)用。python標(biāo)準(zhǔn)庫(kù)中還有一個(gè)灰常給力的模塊,那就是bisect。這個(gè)庫(kù)接受有序的序列,內(nèi)部實(shí)現(xiàn)就是二分。下面這篇文章就詳細(xì)介紹了Python如何實(shí)現(xiàn)二分查找與bisect模塊,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01python3.7實(shí)現(xiàn)云之訊、聚合短信平臺(tái)的短信發(fā)送功能
這篇文章主要介紹了python3.7實(shí)現(xiàn)云之訊、聚合短信平臺(tái)的短信發(fā)送功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09python 監(jiān)控某個(gè)進(jìn)程內(nèi)存的情況問題
這篇文章主要介紹了python 監(jiān)控某個(gè)進(jìn)程內(nèi)存的情況問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05