python瘋狂講義筆記(列表元組和字典)

2021-09-28 22:15:16 字數 4747 閱讀 3958

python內建的 三種常用資料結構 : 列表  (list )、元組( tuple )和 字 典( dict )。列表和元組比較相似,它們都按順序儲存元素 , 每個元素都有自己的索引,因此列表和元組都可通過索引訪問元素 。二 者的 區 別 在 於元組是不可修改的,但列表是可修改的 。 字典則以 key-value的形式儲存資料 。

指的是 一 種包含多項資料的資料結構,序列包含的 多 個資料項(也叫成員)按順序排列,可通過索引來訪問成員 。常見序列型別包括字串 、列表和元組等

建立列表和元組:

建立列表使用方括號 , 建立元組使用圓括號,並在括號中列出元組 的元素,元素之間以英文逗號隔 開

my_list = ['crazyit',20,'python']

my_tuple = ('crazyit',20,'python')

只要不涉及改變元素的操作 ,列 表和元組的用法是通用的。列表的元素相當於 乙個變數 ,程式既可使用它的值,也可對元素賦值;元組的元素則相當於乙個常量 , 程式只能使用它的值 , 不能對它重新賦值。

子串行:

[start : end : step] step 表示步長,因此 step 使用負數沒有意義。

加法,乘法:

列表和元組支援加法運算,加法的和就是返回乙個列表或元組,其包含兩個列表或元組的元素 。需要指 出的是,列 表只能和列表相加;元組只能和元組相加;元組不能 直接和列 表相加。

in 運算子:

長度、最大值和最小值:

內建的 len()、 max()、 min()全域性函式來獲取元組或列表的長度、最大值和最小值 。

序列封包和序列解包:

程式把多個值賦給乙個變數時, python 會自動將多個值封裝成元組。這種功能被稱為序列封包 。

程式允許將序 列 (元組或列表等)直接賦值給多個變數,此時序列的各元素會被依次賦值給每個變數(要求序列的元素個數和變數個數相等)。這種功能被稱為序列解包。

#tuple封包

values = 10,20,30

print(values)#(10,20,30)

print(type(values))##tuple解包

a_tuple = tuple(range(1,10,2))

a,b,c,d,e = a_tuple

print(a,b,c,d,e)#1 3 5 7 9

#list解包

a_list = ['fkit', 'crazyit']

a_str, b_str = a_list

print(a_str, b_str)#fkit crazyit

#實現交換變數的值

x,y,z = 10,20,30

x,y,z = y,z,x #20 30 10

#以只解出部分變數,剩下的依然使用列表變 量儲存

#在左邊被賦值 的 變數之前新增「*」,那麼該變數就代表 一 個列表

first, decod ,*rest = range(10)

print(first)#0

print(rest)#[2,3,4,5,6,7,8,9]

list() 函式可用於將元組 、區間 ( range )等物件轉換為列表。

>>> a_tuple = ('1',20,-1.2)

>>> a_list = list(a_tuple)

>>> a_list

['1', 20, -1.2]

>>> a_range = range(1,5)

>>> a_range

range(1, 5)

>>> b_list = list(a_range)

>>> b_list

[1, 2, 3, 4]

>>> c_list = list(range(4,20,3))

>>> c_list

[4, 7, 10, 13, 16, 19]

python 也 提供了乙個 tuple() 函式 , 該 函式可用 於將列表、 區 間 ( range )等物件轉換為元組 。

>>> a_list = ['crazyit',20,-2]

>>> a_list

['crazyit', 20, -2, 'fkit']

>>> a_tuple = (3.4,5.6)

>>> a_list

['crazyit', 20, -2, 'fkit', (3.4, 5.6)]

>>> a_list

['crazyit', 20, -2, 'fkit', (3.4, 5.6), ['a', 'b']]

從上面**可以 看出 ,為列 表追加另乙個列表 時, python 會將被迫加 的列 表當 成 一 個整體 的元素,而不是追加目標列表中的元素 。 如果希望不將被追加的列表當成 一 個整體,而只是追加列表中的 元素 ,則可使用列表的 extend()方法。如下:

>>> b_list =  ['a',30]

>>> b_list.extend((-2,3.1))

>>> b_list

['a', 30, -2, 3.1]

>>> b_list.extend(['c','r'])

>>> b_list

['a', 30, -2, 3.1, 'c', 'r']

刪除列表元素:

del 語句不僅可以刪除列表元素,也可以刪除普通變數

remove ()方法來刪除列表元素,該方法並不是根據索引

來刪除元素的,而是根據元素本身來執行刪除操作的。該方法只刪除第乙個找到的元素,如果找不到該元素,該方法將會引發 va lueerror 錯誤 。

clear() 方法,正如它的名字所暗示 的, 該方法用於清空 列 表 的所有元素

修改列表元素:

如果將列表其中一段賦值為空列表,就變成了從列表中刪除元素.

列表的其他常用方法:

>>> #list模擬棧

...

>>> stack =

>>> stack

['fkit', 'crazyit', 'charlie']

>>> stack.pop()

'charlie'

>>> stack

['fkit', 'crazyit']

>>> stack.pop()

'crazyit'

>>> stack

['fkit']

建立字典:可使用花括 號語法來創 建字典 ,也可使用 dict() 函式來建立字典。

需要指出的是,元組可以作為 dict 的 key ,但列表不能作為元組的 key 這是由於 diet 要求 key必須是不可變型別,但列表是可變型別,因此列表不能作為元組的 key 。

>>> dict1 = 

>>> dict1

>>> dict2 =

>>> dict2

>>> dict3 =

traceback (most recent call last):

file "", line 1, in typeerror: unhashable type: 'list'

>>> vagetables = [('celery',1.58),('brocoli',1.29),('lettuce',2.19)]

>>> dict4 = dict(vagetables)

>>> dict4

>>> cars = (('celery',1.58),('brocoli',1.29),('lettuce',2.19))

>>> dict5 = dict(cars)

>>> dict5

>>> c = (['celery',1.58],['brocoli',1.29],['lettuce',2.19])

>>> dict6 = dict(c)

>>> dict6

>>> d = [['celery',1.58],['brocoli',1.29],['lettuce',2.19]]

>>> dict7 = dict(d)

>>> dict7

>>> e = [['celery',1.58],['brocoli',1.29],('lettuce',2.19)]

>>> dict8 = dict(e)

>>> dict8

在使用 dict()函 數創 建字典時 , 可以傳入多個列表或元組引數作為 key-value 對 , 每個列表或元組將被當成乙個 key-value 對,因此這些列表或元組都只能包含兩個元素。

字典的基本用法:

可以這樣說,字典相當於索引是任意不可變型別的列表:而列表則相當於 key 只能是整數的字典。因此 ,如 果程式中要使用的字典的 key 都 是整數型別, 則可 考慮能否換成列表。此外,還有 一 點需要指出,列表的索引總是從 0 開始、連續增大的;但字典的索引即使是整數型別, 也不 需要從 0 開始,而且不需要連續。因此,列表不 允許對不存在的索 引 賦值:但字典則 允許直接對不存在的 key 賦值一一這樣就會為字典增加乙個 key-value 對 。

《OC瘋狂講義》筆記(三)

1 類方法 1 什麼是類方法 物件方法 返回值型別 方法名 形參的型別 形參名 類方法 返回值型別 方法名 形參的型別 形參名 2 類方法怎麼去定義 返回值型別 方法名 形參的型別 形參名 3 類方法的使用 呼叫 物件方法 物件名 方法名 實參 類方法 類名 方法名 實參 4 使用類方法的好處 1 ...

《OC瘋狂講義》筆記(五)

1 oc中的點語法 點語法 物件名.成員變數名 點語法不是訪問成員變數,而是方法的呼叫 它是乙個編譯器特性 點語法作用 可以替換傳統的get和set方法的呼叫 點語法的前提 首先得先有 get和set方法 點語法實質 呼叫get和set方法 如果點語法出現在 的左邊,表示設定值,相當於呼叫了set方...

《瘋狂Python講義》之異常處理

異常機制已經成為衡量一門程式語言是否成熟的標準之一,使用異常處理機制的python程式有更好的容錯性,更加健康。python的異常處理機制可以讓程式具有極好的容錯性。使用try except捕獲異常 語法結構如下 try 業務實現 except error1,error2,as e alert 輸入...