瘋狂python講義學習日誌02——python序列類型容器

前言

本文屬於小編在博客中分享的關於學習李剛《瘋狂python講義》系列學習日誌,在這篇文章裏主要分享python中使用的序列容器。

1 序列簡介

所謂序列,是一種可以包含多項數據的數據結構,序列包含的多個數據按照順序排列,課可以通過索引進行訪問。

1.1 python的序列

Python中應用到的序列有列表(list)、元祖(tuple)和字典(dict)。列表中的元素是可變的,而元祖中的元素是不可變的。

1.2 創建列表和元祖

使用方括號創建列表,使用圓括號創建元祖。

#使用方括號定義列表
my_list=['crazy','handsome','smart']
#使用圓括號定義元祖
my_tuple=['crazy','handsome','smart']

2 列表和元組的通用方法

2.1 通過索引訪問元素

索引是訪問序列元素最爲樸素的方法,值得注意的是在python中由於元組中的元素是不可變的,因此通過索引訪問元組的元素時只可以使用它的值,但是不能重新賦值。

a_tuple=('hello','你好')
#訪問元組第一個元素
print(a_tuple)
#訪問第二個元素
print(a_tuple[1])
#訪問倒數第一個元素
print(a_tuple[-1])

2.2 子序列

所謂子序列即訪問列表或元組中指定的一段元素。

[start:end:step]#其中start表示起始位置(包含),end表示結束位置(不包含),step表示步長

start和end的數值可正可負,當數值爲負數時。代表從倒數的位置開始。

a_tuple=(1,2,3,4,5,6,7,8,9)
#訪問第2個元素到第4(不包含)個元素
print(a_tuple[1:3])#輸出2,3
#訪問倒數第3個到倒數第1個(不包含)元素 
print(a_tuple[-3:-1])#輸出7,8
#訪問第三個到第九個(不包含)元素,間隔爲2
print(a_tuple[3:9:2])

2.3 加法

列表和元祖支持加法運算,加法的和就是兩個列表或元組所包含的元素的和,列表只能和列表相加,元組只能和元組相加。

#下面演示兩個元組相加
a_tuple=(1,2,3)
b_tuple=(4,5,6)
c_tuple=a_tuple+b_tuple
print(c_tuple)#輸出1,2,3,4,5,6
#接下來演示列表相加
a_list=[1,2,3]
b_list=[4,5,6]
c_list=a_list+b_list
print(c_list)#輸出1,2,3,4,5,6

2.4 乘法

列表和元組可以和整數執行乘法運算,相當於把他們包含的元素重複整數遍。

a_tuple=('1','2')
b_tuple=a_tuple*3
print(b_tuple)#輸出1,2,1,2,1,2

2.5 in運算符

列表和元組可以使用in運算符來判斷某個元素是否在其中。

a_tuple=('a','c','c')
print('a' in a_tuple)#輸出True

2.6 長度、最大值和最小值

列表和元組可以使用len()、max()、min()函數進行相關操作。

序列封包和序列解包

所謂封包是指,可以將多個值賦給一個變量,python會自動將多個值封裝爲元組。解包是指將序列直接賦值給多個變量,序列中的各個元素會被依次賦值給每個變量。

#封包
vals=10,20,30
print(vals)#輸出10,20,30
print(type(vals))#輸出 <class '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

python允許在左邊被賦值的變量之前添加*,那麼該變量就變成一個列表,可以保存多個元素。

first,*middle,last=range(10)
print(first)# 0
print(middle)#1,2,3,4,5,6,7,8
print(last)#9

3 使用列表

元組和列表的區別在於,元素中的元素是不可改變的。因此可以認爲列表是增強版的元組。

3.1 創建列表

對於列表來說除了使用括號創建列表之外,還可以使用list()函數來創建。(python也爲元組提供了tuple()構造函數來講列表和區間轉換爲元組)

a_tuple=('hello','every','one')
#將元組轉換爲列表
a_list=list(a_tuple)
#將區間轉換爲列表
a_range=range(1,6)
b_list=list(a_range)
c_list=list(range(1,6,2))

3.2 增加列表元素

列表可以使用append()方法將傳入的參數添加到列表的最後面,append()方法可以接收單個值,也可以接收一個元組、列表等,此時只是把元組和列表當成單個元素,在列表中通過append方法加入元組或列表,會在加入的列表中形成嵌套。

a_list=['1','2','3']
#追加一個元素
a_list.append('4')
print(a_list)#1,2,3,4
a_tuple=('5','6','7')
a_list.append(a_tuple)
print(a_lsit)#1,2,3,4,(5,6,7)#追加的a_tuple被整個視爲一個元素

如果向列表追加一個列表不希望被視爲一個元素,而是添加列表中的元素,則可以使用extend()方法。

b_list=['2','3','4']
b_list.extend(('5','6','7'))
print(b_list)#1,2,3,4,5,6,7

還可以使用insert()方法在列表中間插入元素。

c_list=range(1,6)
#在索引3處插入字符串
c_list.insert(3,'crazy')
print(c_lsit)#1,2,3,crazy,4,5
c_list.insert(3,tuple('crazy'))
print(c_list)#1,2,3,(c,r,a,z,y),'crazy',4,5

3.3 刪除列表元素

python中提供了3種刪除列表元素的方法。

  1. del:該方法可以刪除列表中指定索引的元素,還可以用來刪除python變量。
a_list=[1,2,3,4,5]
del a_lsit[2]
print(a_list)#輸出1,2,4,5
del a_list[1:3]
print(a_list)#輸出1,5
name= 'crazy'
print(name)#'crazy'
del name
print(name)#'NameError'
  1. 使用remove()方法刪除元素,remove方法可以根據內容找到首先符合的元素進行刪除。
  2. 還可以使用clear()方法,清空列表中的元素
c_list=[20,'crazyit',30,-4,'crazyit',3.4]
#刪除第一次找到的30
c_list.remove(30)
print(c_list)#輸出20,‘crazyit’,-4,'crazyit',3.4
c_list.clear()
print(c_list)#[]

3.4 修改列表元素

a_list=[2,4,-3.4,'crazyit',23]
#對第三個元素賦值
a_list[2]='fkit'
#對倒數第二個元素賦值
a_list[-2]=9527
#可以使用slice對列表賦值
b_list=list(range(1,5))
print(b_list)#輸出1,2,3,4
b_list[1:3]=['a','b']
print(b_list)#輸出1,a,b,4
#對列表中的空slice賦值,實現對列表插入元素
b_list[3:3]=['x','y']
print(b_list)#輸出1,a,x,y,b,4
#對列表使用slice賦值不能使用單個值,如果使用字符串賦值python會把字符串當成序列處理
b_list[1:3]='charlie'
print(b_list)#1,c,h,a,r,l,i,e
#在使用slice語法賦值時也可指定step參數,如果指定了step參數,要求賦值的列表個數與所替換的列表元素個數相等。
c_list=list(range(1,10))
#指定step爲2,被賦值的元素有4個,因此用於賦值的元素必須有四個元素。
c_list[2:9:2]=['a','b','c','d']
print(c_list)#輸出1,2,a,4,b,6,c,8,d

3.5 列表的其他使用方法

  1. count():用於統計列表中某個元素出現的次數
  2. index():判斷某個元素出現的位置
  3. pop():實現元素出棧操作,使用append()實現入棧
  4. reverse():將列表中的元素方向存儲
  5. sort():用於對列表元素排序,sort可以按照參數名的方式傳入key和reverse兩個參數。
b_list=['python','swift','ruby','Go','Kotlin','Erlang']
b_list.sort(key=len,reverse=true)#使用len()函數對集合元素生成比較大小的鍵

4 使用字典

4.1 創建字典

程序可以使用花括號或dict()函數來創建字典,字典的key值需要是不可變類型的。

scores={'語文':89,'數學':92,'英語':93}
empty_dict={}#創建了一個空的字典

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

vegetables=[('celery',1.58),('brocoli',1.29),('lecture',2.19)]
dict=dict(vegetables)
dict11=dict(me=7,you=3)#實現你三我七

4.2 字典的基本用法

scores={'語文':89}
#通過key訪問value
print(scores['語文'])
#添加一個key-value
scores['數學']=93
#使用del刪除key-value
del scores['語文']
#判斷字典是否包含指定的Key
print('語文' in scores)#true

4.3 字典的常用方法

  1. clear():清空字典中的key-value
  2. get():根據key獲取value
  3. update()如果包含已有的key-value對,進行更新
  4. items():獲取所有的鍵值對
  5. keys():獲取所有的key
  6. values():獲取所有的value
  7. setdefault()用戶根據key獲取value,如果key不存在設置默認值。

4.4 使用字典格式化字符串

#在字符串模板中使用Key
temp='書名是:%(name)s,價格是:%(price)010.2f,出版社是:%(publish)s'
book={'name':'瘋狂python講義','price':88.9,'publish':'電子社'}
print(temp%book)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章