1. 程式人生 > 實用技巧 >(Python學習) 40. Python 常用內建資料結構部分總結-列表、元組、字典、集合

(Python學習) 40. Python 常用內建資料結構部分總結-列表、元組、字典、集合

一、列表list

1. 列表的特徵

  1. 列表中的每個元素都可變的,意味著可以對每個元素進行修改和刪除;

  2. 列表是有序的,每個元素的位置是確定的,可以用索引去訪問每個元素;

  3. 列表中的元素可以是Python中的任何物件;

  4. 可以為任意物件就意味著元素可以是字串、整數、元組、也可以是 list 等Python中的物件。

2. 列表的資料操作

  1. 直接建立列表 

mylist = ['Google', 'Yahoo', 'Baidu']

  2. 對列表中的指定位置進行修改

1 mylist = ['Google', 'Yahoo', 'Baidu'] #變更索引位置1Yahoo的內容為Microsoft
2 mylist[1] = 'Microsoft' #執行結果: ['Google', 'Microsoft', 'Baidu']

  3. 在列表後面追加元素

mylist.append('Alibaba')  

  4. 在指定位置插入元素

mylist.insert(1, 'Tencent')  

  5. 刪除元素

1 mylist = ['Google', 'Tencent', 'Microsoft', 'Baidu', 'Alibaba']
2 mylist.pop()      # 刪除尾部元素,會返回被刪除元素
3 mylist.pop(1)  # 刪除索引為1的元素,並返回刪除的元素
4 mylist.remove('Microsoft') #刪除列表中的Microsoft 5 del mylist[1:3] #刪除列表中索引位置1到位置 3 的資料

  6. 替換元素

1 mylist[0] = 'Baidu'
2 mylist[1] = ['python', 'java', 'php']  # 列表的資料型別可以不同,也可以是列表

  7. 列表排序

 1 def comp(x,y):
 2     return y-x
 3 
 4 #sort 只能應用在列表list上,sort方法會在原list上直接進行排序,不會建立新的list
 5 #sorted 可以對所有可迭代的物件進行排序的操作,sorted方法不會對原來的資料做任何改動,排序後的結果是新生成的
6 7 myList= [1, 2, 5, 4] 8 myList.sort(key=cmp_to_key(lambda x,y:x-y)) # 按從小到大 9 myList=sorted(myList,key=cmp_to_key(lambda x,y: x-y)) # 按從小到大 10 myList.sort(key=cmp_to_key(comp)) # 按從大到小 11 myList=sorted(myList,key=cmp_to_key(comp)) # 按從大到小

  8. 獲取列表長度

1 mylist = [1, 2, 5, 4]
2 len(mylist)

  9. 獲取列表指定位置的資料

1 mylist = ['Google', 'Tencent', 'Microsoft', 'Baidu', 'Alibaba','Sina']
2 mylist[1]     #獲取索引位置1的資料 'Tencent'
3 mylist[1:5]   #獲取索引位置1到5的資料,注意這裡只會取到索引位置4,這裡叫做取頭不取尾 'Tencent', 'Microsoft', 'Baidu', 'Alibaba'
4 mylist[ :5]   #獲取從最頭到索引位置5的資料 'Google', 'Tencent', 'Microsoft', 'Baidu', 'Alibaba'
5 mylist[2:]    #獲取從索引位置2開始到最後的資料 'Microsoft', 'Baidu', 'Alibaba','Sina'

  10. 用迴圈來建立列表

1 a = [1,2,3,4,5,6]
2 b = [i*10 for i in a]  #在a的資料基礎上每個資料乘以10生成一個列表b,
3 
4 #    [1, 2, 3, 4, 5, 6]
5 #    [10, 20, 30, 40, 50, 60]

  11. 過濾列表中的內容放入新的列表中

1 a = [x for x in range(1,20)] #生成一個從1到20的列表
2 b = [m for m in a if m % 2 == 0] #把a中所有偶數生成一個新的列表b
3 
4 # 執行結果如下:
5 # b = [2, 4, 6, 8, 10, 12, 14, 16, 18]

  12. 巢狀式生成列表

1 a = [i for i in range(1,4)]   #生成一個列表a
2 b = [i for i in range(100,400) if i % 100 == 0]   #生成一個列表b
3 c = [m+n for m in a for n in b] # 巢狀式 
4 
5 #執行結果:
6 #    [1, 2, 3]
7 #    [100, 200, 300]
8 #    [101, 201, 301, 102, 202, 302, 103, 203, 303]

  13. list函式:可以通過list將序列建立為列表。其實list為一種型別並非函式,但此處二者並無多大區別。下面的tuple、dict也是如此。

myList = list("Hello world") #myList=['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']

二、元組tuple

注意:元組Tuple,用法與List類似,但Tuple一經初始化,就不能修改,沒有List中的append(), insert(), pop()等修改的方法,只能對元素進行查詢

a = ('a','b',['A','B'])
print(type(a))       # 檢測a的資料型別是什麼 <class 'tuple'>      
print(a)             # 列印內容 ('a', 'b', ['A', 'B'])
a[2][0] = 'X'        # 嘗試變更資料,成功了,為什麼?
a[2][1] = 'y'
print(a)             # 打印出變更後的內容 ('a', 'b', ['X', 'y'])
print(type(a[2]))    # 檢測a[2]的資料型別是什麼 <class 'list'