Python中列表,元組,字典和集合的區別及它們之間的轉換
前排提示:元祖是錯誤的寫法(帶錯別字),部分文章寫為元祖系誤,正確的說法為元組。
首先瞭解序列。
序列是具有先後關系的一組元素,它是一維元素向量,元素類型可以不同。
元素間由序號引導,通過下標訪問序列的特定元素。
序列是一個基類類型,元組、列表是序列類型的一種擴展,繼承序列類型的全部通用操作。
(1)集合set
集合就是我們數學學的集合,集合最好的應用是去重——集合類型所有元素無重復。可以利用{}或set()建立集合。
註:print默認以換行符\n作為結尾,end=" "則使print以空格字符作為結尾。
(2)元組tuple
元組和列表在結構上沒有什麼區別(因為元組、列表是序列類型的一種擴展),唯一的差異在於元組是隻讀的,創建後不能修改。
於是,有應用場景——數據保護:如果不希望數據被程序所改變,轉換為元組類型。
元組使用小括號()或tuple()創建。可以使用或不使用小括號。
(3)列表list
什麼是列表呢?我覺得列表就是我們日常生活中經常見到的清單。
比如,統計過去一周我們買過的東西,把這些東西列出來,就是清單。
由於我們買一種東西可能不止一次,所以清單中是允許有重復項的。
如果我們擴大清單的范圍,統計我們過去一周所有的花費情況,那麼這也是一個清單,但這個清單裡會有類別不同的項,比如我們買東西是一種花費,交水電費也是一種花費,這些項的類型是可以使不同的。
python的列表跟清單的道理是一樣的,特點就是:可重復,類型可不同。類型不同也是跟數組最本質的區別瞭。
列表創建後可以隨意被修改(元組不可以)。python裡的列表用[ ]或list()創建:
(4)字典dict
最後一個是字典。字典類型是“映射”的體現。
字典是鍵值對的集合,鍵值對之間無序。
采用大括號{}和dict()創建,鍵值對用冒號:表示。
字典最大的價值是查詢,通過鍵,查找值。
下面是一些小例子
1、列表元組轉其他
# 列表轉集合(去重) list1 = [6, 7, 7, 8, 8, 9] set(list1) # {6, 7, 8, 9} #兩個列表轉字典 list1 = ['key1','key2','key3'] list2 = ['1','2','3'] dict(zip(list1,list2)) # {'key1': '1', 'key2': '2', 'key3': '3'} #嵌套列表轉字典 list3 = [['key1','value1'],['key2','value2'],['key3','value3']] dict(list3) # {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'} # 列表、元組轉字符串 list2 = ['a', 'a', 'b'] ''.join(list2) # 'aab' tup1 = ('a', 'a', 'b') ''.join(tup1) # 'aab
2、字典轉其他
# 字典轉換為字符串 dic1 = {'a':1,'b':2} str(dic1) # "{'a': 1, 'b': 2}" # 字典key和value互轉 dic2 = {'a': 1, 'b': 2, 'c': 3} {value:key for key, value in a_dict.items()} # {1: 'a', 2: 'b', 3: 'c'}
3、字符串轉其他
# 字符串轉列表 s = 'aabbcc' list(s) # ['a', 'a', 'b', 'b', 'c', 'c'] # 字符串轉元組 tuple(s) # ('a', 'a', 'b', 'b', 'c', 'c') # 字符串轉集合 set(s) # {'a', 'b', 'c'} # 字符串轉字典 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(';')
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Python基礎之數據結構詳解
- Python 列表(List)的底層實現原理分析
- Python數據容器dict(字典)的實現
- python快速入門題目詳解
- Python 實現反轉整數的案例(很容易懂的那種)