1. 程式人生 > >元組字典集合

元組字典集合

元組 tuple

元組跟list非常相似,特點和區別是“不可修改”。所以元組需要在建立的時候就制定資料。 語法:小括號括起來,逗號分隔每一項

建立

tuple1 = (10,20,‘張三’) (常用) tuple = (10,20,‘張三’)

場景

元組由於不可變,適合定義 常量、配置、不需要改變的值。 這樣就在複雜程式碼中就不用害怕因為bug誤修改值。 例如定義 中國所有的省份,一個註冊登入表單中的下拉框選項

查詢

有索引,通過下標訪問 tuple[index] tuple2 = (‘河南’,‘雲南’) tuple2[0] >>> ‘河南’

也支援切片

tuple2[0:1] >>> (‘河南’,) 注意的一個地方元組有時只有一項的時候,後面仍有一個逗號。

陣列優勢通過下標訪問效率較高較快,但是插入修改元素較慢。

資料結構

#列表 ###定義 原來的單值變數無法滿足業務,需要一個“容器”來裝內容。 列表儲存一系列有序(有下標)資料。容器內可以儲存整數、布林、字串、或其他容器。

###語法 中括號擴住,逗號分隔(物件item)元素。

###建立 1.通過內建關鍵字建立list() demo_list = list() 2.(常用)中括號 demo_list2 = [] 3.建立的時候賦值 demo_list3 = [‘小明’,‘小紅’,‘小王’] ###新增 add

  1. (常用)append() 方法,新增新項到列表的末尾。 list例項.append(要增加的項) student_list = [‘小明’,‘小紅’,‘小王’] sutdent_list.append(‘小李’) 2.insert()方法,可以根據索引值插入指定資料。 什麼是索引?索引其實是一個編號,編號是從0開始的。目的為了方便操作資料。 列表例項 .insert(索引,要增加的項)
  2. for 迴圈 list = [1,2,3,4] for i in range(5,8): list.append(i) print(list) 4.兩個列表拼接,用加號 list1 = [1,2,3,4] list2 = [5,6,4,8] list3 = list1 + list2

###刪除專案 1.pop() 列表.pop(索引),根據索引刪除列表中的某一個元素,返回刪除成功的元素。 pop()不傳索引引數的時候,預設刪除列表最後一項。 pop()函式相當於append和insert函式的逆運算 2.remove() 列表.remove(想要刪除的專案值) 根據項item的值value來刪除而不通過索引操作。如果不存在的話,報錯值不存在列表中。 list1 = [1,2,3,4] list1.remove(2) list1 >>> [1,3,4]

3 clear()清空列表 列表。clear() 清空所有項,返回空列表 list1 = [1,2,3,4] list1.cleat() list1

  1. del 關鍵字刪除,根據索引刪除元素 list1 = [1,2,3,4] del list1[1] list1 >>>[1,3,4]

###訪問元素 通過索引(Index、下標) 列表[索引] 分清列表的中括號和索引中括號 訪問不存在的索引時,會報索引越界錯誤。 student_list = [‘大明’,‘小紅’,‘小李’] stu1 = student_list[0] stu2 = student_list[1] stu3 = student_list[2] print(stu1,stu2,stu3) 大明 小紅 小李 student_list[4] IndexError: list index out of range

修改

修改基於索引的。訪問列表下標,然後等號賦值 列表[索引] = 新值 student_list = [‘小明’,‘小紅’,‘小李’] student_list[0] >>> ‘小明’ student_list[0] = ‘大明’ student_list >>> [‘大明’, ‘小紅’, ‘小李’]

遍歷

遍歷、迭代,把一個sequence序列(可迭代的物件如列表)依次取出。 那些結構可以迭代? sutdent_list = [‘大明’, ‘小紅’, ‘小李’] for i in student_list: print(i) 大明 小紅 小李

切片

列表[索引start: 索引end: 步進step] 切割截取出來的區間。 list = [1,2,3,4,5] list[0:2] >>> [1, 2] 切片引數可以為負數, list[-3,-1] >>> [3,4] 擷取方向向右為正,步進為正時才能擷取 start必須小於end,反的話截取出來的是空的。 list[3:1] >>> [] 索引0可以省略 list[0:2] 等同於 list[:2] 反向reverse輸出列表 list[::-1] list[::-1] >>> [5,4,3,2,1]

連結串列的優勢插入刪除效率高,查詢效率一般

(語法糖)for in 生產列表的單行寫法

list1 = [] for i in range[1,5] list1.append(i)

[i for i in range(1,5)]

字典 dict

跟list也是一種容器。特點:鍵值對(對映)儲存。其他語言java中叫map。 沒有索引,是無序的。靠鍵(key)來增刪改查。 語法:大括號擴住。內容為鍵值對,鍵值對用冒號連線 冒號左邊的是鍵(key), 右邊的是值(value):每個鍵值對逗號分隔。 跟列表比較:列表一般儲存一類東西,字典儲存的是一個東西里的各個屬性和描述。

建立

1.內建類例項化建立 dict1 = dict() 2.大括號,內容空 dict1 = {} 3. 建立是賦初始值 dict = {‘name’:‘小明’,‘age’:‘13’,‘sex’:‘male’}

查詢 項的訪問

1.(常用)dict[鍵key] >>> 值value dict1 = {‘name’:‘小明’,‘age’:‘13’,‘sex’:‘male’} dict1[‘name’] >>> ‘小明’ 如果鍵不存在的話,報KeyError錯誤。 dict[‘aaa’] >>> KeyError:aaa 2.get(‘鍵’,預設值) 跟dict[鍵]非常相似,只不過多了個預設值。 dict.get(‘name’) >>> ‘小明’ dict.get(‘aaa’,None) >>> None

新增

字典[新鍵] = 新值 dict[‘new key’] = ‘new value’

修改

字典[鍵] = 新值 dict1 = {‘name’:‘小明’,‘age’:13,‘sex’:‘male’}

遍歷

先 字典.items()轉換為大列表套小列表的形式。 再用for迴圈遍歷出來。 dict.items() dict_items([(‘name’, ‘小紅’), (‘age’, ‘13’), (‘sex’, ‘male’), (‘aaa’, ‘bbb’)]) k,v = (‘name’,‘小明’) for k,v in dict.items(): print(k,v)

刪除

  1. 鍵訪問,值設定為None,鍵還在 dict1 = {‘name’:‘小明’,‘age’:13,‘sex’:‘male’} dict1[‘name’] = None dict1[‘name’] >>> None

  2. pop(鍵) 根據鍵刪除,返回刪除成功的值,會把鍵和值都刪除。 dict1 = {‘name’:‘小明’,‘age’:13,‘sex’:‘male’} dict1.pop(‘name’) >>> ‘小明’ dict1 >>> {‘age’:‘13’,‘sex’:‘male’}

  3. del 字典[鍵], del關鍵字刪除,沒有返回值,會把鍵和值都刪除。

  4. 字典 .clear() 刪除所有內容 dict1.clear() dict1 <<< {}

其他的常用方法

dict.items() 返回一個列表, 每一項都是 鍵值對 dict.keys() 返回一個列表,每一項是字典裡的 鍵 dict.values() 返回一個列表,每一項是字典裡的 值 dict__contains__(key) 鍵存在的話返回True,不存在返回

dict1 = {‘name’:‘小明’,‘age’:13,‘sex’:‘male’} dict1.items() >>> [(‘name’:‘小明’),(‘age’:13),(sex’:‘male’)}] dict1.key() >>> [‘name’,‘age’,‘sex’] dict1.value() >>> [‘小明’,‘13’,‘male’] dict1.contains(‘name’) >>> True

容器列表、字典的巢狀

列表套列表

list = [1,2,3 [1,2].[3,4]]

(常用)列表套字典

student_list = [ {‘name’:‘小明’, ‘age’: ‘13’, ‘sex’: ‘male’}, {‘name’:‘懶懶’, ‘age’: ‘15’, ‘sex’: ‘male’}, {‘name’:‘勤勤’, ‘age’: ‘15’, ‘sex’: ‘male’}, … … ]

散列表查詢效率較高

集合

特點:無序的。元素不能重複。 使用場景:只關心元素是否出現,不管先出現順序和次數; 常用來“去重”,檢查元素是否出現過;求交,並,補集。 語法:大括號擴住,裡面逗號分隔單個項,跟字典裡面是鍵值對不同。

建立

1.類例項化 set1 = set() 2.帶初始值 set1 = {‘a’,‘b’,‘c’,‘d’}

新增

set1 = {‘a’,‘b’,‘c’,‘d’} add() 方法 set1.add(‘e’) >>> {‘a’,‘b’,‘c’,‘d’,‘e’}

刪除

1.根據項內容刪除 set1.remove(‘a’) set1 >>> {‘b’,‘c’,‘d’} 2.全部刪除 set1.clear() >>> set() 3.pop() 從集合裡取出一個元素返回,如果集合為空的話會報錯: KeyError: ‘pop from an empty set’

求合,交,並集

兩個集合參與運算 並集:所有屬於集合A或屬於集合B的元素組成的集合 交集:屬於集合A又屬於集合B。運算子 & set1 = {3,4,5,6} set2 = {5,6,7,8} set1 & set2 >>> {3,4} 並集,所有集合屬於集合A或屬於集合B的元素組成的集合。運算子 | 。 set1 | set2 {3, 4, 5, 6, 7, 8} 補集差集 set2 - set1 >>> {5,6} 屬於集合set2但不屬於set1