中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

小學Python系列少兒編程課程《第4章 形形色色的數據容器》課件(共99張PPT)

資源下載
  1. 二一教育資源

小學Python系列少兒編程課程《第4章 形形色色的數據容器》課件(共99張PPT)

資源簡介

(共99張PPT)
Python少兒編程
第四章 形形色色的數據容器
目錄
1.1
通用系列
1.2
百變字符串
1.3
會魔法的列表
1.4
被束縛了的元組
1.5
有身份的字典
1.6
獨一無二的集合
PART 01
通用序列
索引
1.1
序列中的所有元素都可以通過索引(下標)來獲取,從左往右,第一個元素的索引為0,第二個為1,依此類推到最后一位。索引還可以取負值,從右往左,最后一個元素的索引為 1,倒數第二個為 2,依此類推到左側第一位。
例如,創建字符串“str1='Python'”,其索引如表4-1所示。
表4-1 字符串str1的索引
由表4-1可知,str1[0]和str1[ 6]的值都是字符“P”。還可使用序列字面值直接使用索引,如'Python'[0]的值也是字符“P”。
分片
1.2
分片與索引類似,都可以獲取序列中的元素,區別是索引只能獲取單個元素,而分片可以獲取一定范圍內的元素。
分片通過冒號隔開的兩個索引來實現,其語法格式如下。
slice[start:end:step]
其中,slice表示序列;start表示起始索引,缺省時分片從序列中的第一個元素開始;end表示結束索引(不含),缺省時分片到序列的最后一個元素結束;step表示步長,缺省時為1,不能為0。
例如,創建字符串“str2='abcdefg'”,使用分片獲取字符串中元素的幾種情況如表4-2所示。
分片
1.2
表4-2 分片獲取字符串str2中元素
分片
1.2
Python中步長不能設置為0,但可以是負數。當步長為負數時,起始索引必須大于結束索引,即分片從右往左提取元素。例如:
str3 = str2[7:0:-1] #str3為'gfedcb'
str3 = str2[-1:-8:-1] #str3為'gfedcba'
str3 = str2[::-1] #str3為'gfedcba'
相加
1.3
使用加法運算符可對序列進行連接操作。例如:
str4 = 'Hello,' + 'World' #字符串連接,str4為'Hello,World'
list1 = [1,2,3] + [4,5,6] #列表連接,list1為[1, 2, 3, 4, 5, 6]
相乘
1.4
使用數字n乘以一個序列會生成新的序列,在新的序列中,原來的序列將重復n次。例如:
str5 = 'hello' * 3 #str5為'hellohellohello'
長度、最小值和最大值
1.5
序列常用的內置函數有len()、min()和max(),其參數都為序列名。其中,len()函數返回序列中元素的個數(即序列長度),min()函數和max()函數則分別返回序列中最小和最大的元素。
【例4-1】 輸入一個字符串,輸出字符串中的最大字符和最小字符,并將字符串輸出為如下格式(輸出的“ ”的個數會隨著字符串的長度而變化),如圖4-1所示。
圖4-1 輸出的文字格式
【問題分析】 本例題中,輸出連續相同的字符“ ”,可使用序列的乘法運算實現,它的個數等于輸入字符串的長度,可使用len()函數獲取。然后使用max()和min()函數獲取字符串中的最大字符和最小字符并輸出。
長度、最小值和最大值
1.5
【參考代碼】
strs = input('請輸入一個字符串:') #輸入字符串并賦給strs
str_len = len(strs) #獲取strs長度并賦給str_len
str_max = max(strs) #獲取strs中最大字符并賦給str_max
str_min = min(strs) #獲取strs中最小字符并賦給str_min
print('該字符串中最大字符為:', str_max) #輸出最大字符
print('該字符串中最小字符為:', str_min) #輸出最小字符
print('+ ' + '-' * str_len + ' +') #輸出“+ ”、str_len個“-”和“ +”
print('| ' + strs + ' |') #輸出“| ”、字符串和“ |”
print('+ ' + '-' * str_len + ' +') #輸出“+ ”、str_len個“-”和“ +”
長度、最小值和最大值
1.5
【運行結果】 程序運行結果如圖4-2所示。
圖4-2 例4-1程序運行結果
查找和計數
1.6
序列提供index()方法用于返回指定元素在序列中首次出現的位置,如果該元素不在序列中則拋出異常,其語法格式如下。
sequence.index(obj)
如果需要知道指定元素在序列中出現的次數,可以使用count()方法進行計數并返回,其語法格式如下。
其中,sequence表示序列,obj表示要查找的對象。
sequence.count(obj)
【例4-2】 查找輸入的人物是否在《三國演義》片段中,如果在,則統計出現的次數。
【問題分析】 首先使用“in”運算符判斷輸入的人物是否在《三國演義》片段中,如果在,則使用index()方法獲取首次出現的位置,然后使用count()方法統計出現的次數。
查找和計數
1.6
【參考代碼】
#創建字符串excerpts并賦值
excerpts = '''次日,于桃園中,備下烏牛白馬祭禮等項,三人焚香再拜而說誓曰:
“念劉備、關羽、張飛,雖然異姓,既結為兄弟,則同心協力,救困扶危;
上報國家,下安黎庶。不求同年同月同日生,只愿同年同月同日死。
皇天后土,實鑒此心,背義忘恩,天人共戮!”誓畢,拜玄德為兄,
關羽次之,張飛為弟。祭罷天地,復宰牛設酒,聚鄉中勇士,
得三百余人,就桃園中痛飲一醉。來日收拾軍器,但恨無馬匹可乘。
正思慮間,人報有兩個客人,引一伙伴當,趕一群馬,投莊上來。
玄德曰:“此天佑我也!”三人出莊迎接。原來二客乃中山大商:
一名張世平,一名蘇雙,每年往北販馬,近因寇發而回。
玄德請二人到莊,置酒管待,訴說欲討賊安民之意。二客大喜,
愿將良馬五十匹相送;又贈金銀五百兩,鑌鐵一千斤,以資器用。'''
查找和計數
1.6
【參考代碼】(續)
name = input('請輸入人物姓名:') #輸入人物姓名并賦給name
if name in excerpts: #如果name在此片段中
#使用index()方法獲取name首次出現的位置index
index = excerpts.index(name)
print(name, '首次出現的位置索引為:', index) #輸出index
#使用count()方法獲取name出現的次數并輸出
print(name, '在此片段中出現', excerpts.count(name), '次')
else:
print(name, '沒有出現在此片段中') #輸出name不在此片段中
查找和計數
1.6
【運行結果】 程序運行結果如圖4-3所示。
圖4-3 例4-2程序運行結果
PART 02
百變字符串
字符串格式化
2.1
Python提供了“%”符號進行字符串格式化,其語法格式如下。
1. “%”符號
其中,[]中的項為可選項,也可以表示為如下形式。
'%[標志][0][輸出最小寬度][.精度]格式字符' %變量
'%[±][0][m][.n]格式字符' %變量
(1)標志:標志字符為“+”或“ ”,指定輸出數據的對齊方式。
(2)輸出最小寬度:用十進制整數m表示輸出的最小位數。
(3)精度:精度格式符以“.”開頭,后跟十進制整數n。
(4)格式字符:用來表示輸出數據的類型,各種格式字符及其功能說明如表4-3所示。
字符串格式化
2.1
1. “%”符號
表4-3 格式字符
字符串格式化
2.1
1. “%”符號
【例4-3】 使用“%”符號格式化。
【參考代碼】
a = 15 #定義變量a并賦值
b = 12345678.1234567 #定義變量b并賦值
s = 'I love Python!' #定義字符串s并賦值
print('a = %05d' % a) #使用m控制輸出位數,空位補0
print('b = %8.3f' % b) #使用m.n控制輸出的長度和小數點位數
print('%17s' % s) #使用m控制輸出字符串長度
print('%-17.6s' % s) #使用-m.n左對齊、控制字符串長度和字符位數
字符串格式化
2.1
1. “%”符號
【運行結果】程序運行結果如圖4-4所示。
圖4-4 例4-3程序運行結果
【程序說明】 輸出變量a時,“%05d”表示輸出寬度為5并用“0”來補空位。輸出變量b時,“%8.3f”表示輸出寬度為8,精度為3,由于實際長度超過8位,故應按實際位數輸出,小數位數超過3位部分被截去。
輸出字符串s時,“%17s”表示輸出字符串寬度為17,如果字符串本身長度不足17,則用空格左補齊,可以看到“I love Python!”前存在3個空格。“% 17.6s”表示輸出寬度雖為17,但這里指定了精度“.6”,也就是說指定了輸出字符的個數為6,并且用“ ”指定了左對齊,所以輸出6個字符“I love”,后面還有11個空格。
字符串格式化
2.1
使用format()方法也可以格式化字符串,其基本語法格式如下。
2. format()方法
模板字符串是由一系列槽(用大括號表示)組成,用于控制字符串中嵌入值出現的位置,其基本思想是,將format()方法中逗號分隔的參數按照序號替換到模板字符串的槽中(序號從0開始)。例如:
模板字符串.format(逗號分隔的參數)
#s為'你好,張三,你這個月的工資是8500元!'
s = '你好,{1},你這個月的工資是{0}元!'.format(8500, '張三')
如果大括號中沒有序號,則按照出現順序替換,例如:
#s為'你好,8500,你這個月的工資是張三元!'
s = '你好,{},你這個月的工資是{}元!'.format(8500, '張三')
字符串格式化
2.1
format()方法中模板字符串的槽除了包括參數序號外,還可以包括格式控制信息,此時槽的內部格式如下。
2. format()方法
{參數序號:格式控制標記}
其中格式控制標記用于控制參數顯示時的格式,它包括“填充”“對齊”“寬度”“,”“.精度”“格式字符”6個可選字段,這些字段可以組合使用。具體的格式控制標記及其說明如表4-4所示。
字符串格式化
2.1
2. format()方法
表4-4 格式控制標記
字符串格式化
2.1
2. format()方法
【例4-4】 模擬輸出簡單的非刷新文本進度條。要求按照任務執行百分比將整個任務劃分為100個單位,每執行10%輸出一次進度條,每行輸出包含進度百分比、代表已完成部分(**)和未完成部分(..)的兩種字符,以及一個跟隨完成進度前進的小箭頭,風格如下:
%10 [**->..................]
【問題分析】 本例題的關鍵是輸出字符的格式,可使用format()方法進行格式化。采用for循環和print()函數構成程序的主體部分,使用格式字符“%”輸出百分比,為了使輸出整齊,可使用{:^4.0%}格式化百分比部分。
由于程序執行速度太快,不便于觀察,可使用time.sleep(t)函數將當前程序暫停t秒,其中,time是Python標準時間庫。
字符串格式化
2.1
2. format()方法
【參考代碼】
import time #導入time模塊
scale = 10 #變量scale表示輸出進度條的精度
print('-----------執行開始-----------') #輸出執行開始提示
for i in range(scale + 1): #循環變量從0到scale
done = '**' * i #用“*”表示已完成的部分
undone = '..' * (scale - i) #用“.”表示未完成的部分
percent = i / scale #計算完成百分比
#格式化輸出
print('{:>4.0%}[{}->{}]'.format(percent, done, undone))
time.sleep(0.1) #暫停0.1秒
print('-----------執行結束-----------') #輸出執行結束提示
字符串格式化
2.1
2. format()方法
【運行結果】 程序運行結果如圖4-5所示。
圖4-5 例4-4程序運行結果
字符串的常用操作
2.2
除了使用index()方法在字符串中查找指定元素,還可使用find()方法在一個較長的字符串中查找子串。如果找到子串,返回子串所在位置的最左端索引,否則返回 1,其語法格式如下。
str.find(sub[,start[,end]])
1. 查找字符串
其中,str表示被查找字符串;sub表示查找的子串;start表示開始索引,缺省時為0;end表示結束索引,缺省時為字符串的長度。
【例4-5】 使用find()方法實現例4-2,查找輸入的人物是否在《三國演義》片段中。
字符串的常用操作
2.2
1. 查找字符串
【參考代碼】
#創建字符串excerpts并賦值
excerpts = '''次日,于桃園中,備下烏牛白馬祭禮等項,三人焚香再拜而說誓曰:
“念劉備、關羽、張飛,雖然異姓,既結為兄弟,則同心協力,救困扶危;
上報國家,下安黎庶。不求同年同月同日生,只愿同年同月同日死。
皇天后土,實鑒此心,背義忘恩,天人共戮!”誓畢,拜玄德為兄,
關羽次之,張飛為弟。祭罷天地,復宰牛設酒,聚鄉中勇士,
得三百余人,就桃園中痛飲一醉。來日收拾軍器,但恨無馬匹可乘。
正思慮間,人報有兩個客人,引一伙伴當,趕一群馬,投莊上來。
玄德曰:“此天佑我也!”三人出莊迎接。原來二客乃中山大商:
一名張世平,一名蘇雙,每年往北販馬,近因寇發而回。
玄德請二人到莊,置酒管待,訴說欲討賊安民之意。二客大喜,
愿將良馬五十匹相送;又贈金銀五百兩,鑌鐵一千斤,以資器用。'''
字符串的常用操作
2.2
1. 查找字符串
【參考代碼】(續)
name = input('請輸入人物姓名:') #輸入人物姓名并賦給name
index = excerpts.find(name)#使用find()方法在excerpts中查找name
if index > -1: #如果返回值大于-1
#輸出index
print('{}首次出現的位置索引為:{}'.format(name, index))
#使用count()方法獲取name出現的次數并輸出
print('{}在此片段中出現{}次'.format(name, excerpts.count(name)))
else:
print('{}沒有出現在此片段中'.format(name)) #輸出不在此片段中
字符串的常用操作
2.2
1. 查找字符串
【運行結果】 程序運行結果如圖4-6所示。
圖4-6 例4-5程序運行結果
字符串的常用操作
2.2
split()方法以指定字符為分隔符,從字符串左端開始將字符串分隔成多個子串,并返回分割結果的列表,其語法格式如下。
str.split([delimiter, num])
2. 分割字符串
其中,str表示被分割的字符串;delimiter表示分隔符,可以是空格、換行(\n)、制表符(\t)等,缺省時為空格;num表示分割次數,缺省時全部分割。
例如,使用split()方法將字符串“This is an example of cutting”進行分割,可以用下面代碼實現。
strs = 'This is an example of cutting' #創建字符串
'''以空格為分隔符將字符串全部分割
結果為['This', 'is', 'an', 'example', 'of', 'cutting']'''
strs.split()
'''以空格為分隔符將字符串分割3次
結果為['This', 'is', 'an', 'example of cutting']'''
strs.split(' ', 3)
字符串的常用操作
2.2
join()方法用于將序列中的元素以指定的字符連接,生成一個新的字符串,其語法格式如下。
str.join(sequence)
3.連接字符串
其中,str表示連接符,可以為空;sequence表示要連接的序列。
例如,使用join()方法將字符串“Python!”中的字符用“ ”連接,可以用下面代碼實現。
#用“ ”連接字符,輸出結果為“P-y-t-h-o-n-!”
print('-'.join('Python!'))
字符串的常用操作
2.2
3.連接字符串
【例4-6】 將字符串“Rain falls on field and tree.”中的多余空格刪除,即如果有連續空格只保留一個。
【問題分析】 可使用split()方法以空格為分隔符將字符串分隔成多個子串,然后使用join()方法通過空格將多個子串進行連接。
【參考代碼】
strs = 'Rain falls on field and tree.‘ #創建字符串strs
print(strs) #輸出strs
split_strs = strs.split() #以空格為分隔符,將strs全部分割
print(split_strs) #輸出分割后結果
join_strs =' '.join(split_strs) #用空格連接分割后的子串
print(join_strs) #輸出連接后的字符串
字符串的常用操作
2.2
3.連接字符串
【運行結果】 程序運行結果如圖4-7所示。
圖4-7 例4-6程序運行結果
字符串的常用操作
2.2
replace()方法用于將字符串中的舊字符串替換成新字符串,其語法格式如下。
str.replace(old,new[,max])
4.替換字符串
其中,str表示字符串;old表示將被替換的舊字符串;new表示新字符串,用于替換old;max是可選參數,表示替換的最大次數,缺省時替換所有。
例如,使用replace()方法將字符串“Monday Tuesday Wednesday”中的“day”替換為“DAY”,可以用下面代碼實現。
strs = 'Monday Tuesday Wednesday'
#將strs中的day替換為DAY,輸出結果為“MonDAY TuesDAY WednesDAY”
print(strs.replace('day', 'DAY'))
#將strs中的day替換為DAY,只替換兩次,輸出結果為“MonDAY TuesDAY Wednesday”
print(strs.replace('day', 'DAY', 2))
字符串的常用操作
2.2
strip()方法用于移除字符串首尾連續的空白字符或指定字符,其語法格式如下。
str.strip([chars])
5.移除字符串的首尾字符
其中,str表示字符串;chars表示移除的字符串首尾指定的字符,缺省時為空格。
例如,使用strip()方法移除字符串“110This is an example0001”中的“0”和“1”,可以用下面代碼實現。
strs = '110This is an example0001' #創建字符串
#移除strs兩側的1,輸出結果為“0This is an example000”
print(strs.strip('1'))
#移除strs兩側的1和0,輸出結果為“This is an example”
print(strs.strip('10'))
字符串的常用操作
2.2
lower()方法用于將字符串中所有大寫字符轉換為小寫,而upper()方法則用于將字符串中所有小寫字符轉換為大寫,其語法格式如下。
str.lower()
str.upper()
6.轉換字符串的大小寫
其中,str表示字符串。例如,使用lower()方法將字符串“This is an EXAMPLE”轉換為小寫,再使用upper()方法將其轉換為大寫,可以使用下面代碼實現。
strs = 'This is an EXAMPLE' #創建字符串
#將strs中的大寫字符轉換為小寫,輸出結果為“this is an example”
print(strs.lower())
#將strs中的小寫字符轉換為大寫,輸出結果為“THIS IS AN EXAMPLE”
print(strs.upper())
字符串的常用操作
2.2
isalnum()方法用于檢測字符串是否由字母和數字,或兩種中的一種組成,如果是則返回True,否則返回False,其語法格式如下。
str.isalnum()
7.檢測字符串
其中,str表示要檢測的字符串。
例如,使用isalnum()方法判斷字符串“2021example”是否由字母和數字組成,可以用下面代碼實現。
strs = '2021example' #創建字符串
print(strs.isalnum()) #判斷strs中是否只有字母和數字,輸出結果為True
PART 03
會魔法的列表
列表的創建和訪問
3.1
創建列表只需將逗號分隔的不同元素使用方括號括起來即可。例如:
animal = ['elephant', 'monkey', 'snake', 'tiger'] #創建列表animal
number = [1, 2, 3, 4, 5] #創建列表number
與字符串一樣,可以通過下標索引的方式來訪問列表中的元素。列表的正索引也是從0開始的,同樣也可以是負索引。例如,使用animal[0]訪問上述列表animal中索引為0的元素,取值為“elephant”。
列表的創建和訪問
3.1
【例4-7】 創建書包列表,記錄書包里的物品。
【參考代碼】
#創建列表schoolbag并賦值
schoolbag = ['語文書', '數學書', '練習冊', '筆盒']
schoolbag1 = schoolbag #將schoolbag賦給schoolbag1
print(schoolbag, schoolbag1) #輸出schoolbag和schoolbag1
schoolbag[0] = '英語書' #將第一個元素的值修改為“英語書”
print(schoolbag, schoolbag1) #輸出schoolbag和schoolbag1
列表的創建和訪問
3.1
【運行結果】 程序運行結果如圖4-8所示。
圖4-8 例4-7程序運行結果
【程序說明】 schoolbag由實際數據賦值產生,為列表對象。將schoolbag賦值給列表schoolbag1只會對schoolbag列表生成一個新引用,此時,schoolbag和schoolbag1指向同一對象,即內存中真實數據只有一份。因此,修改了schoolbag后,schoolbag1也隨之改變。
列表的遍歷
3.2
使用while循環遍歷列表,首先須獲取列表的長度,將其作為while循環的判斷條件。
1.使用while循環遍歷列表
【例4-8】 使用while循環輸出書包中的每項物品。
【參考代碼】
#創建書包列表schoolbag并賦值
schoolbag = ['語文書', '數學書', '英語書', '漫畫書']
length = len(schoolbag) #獲取列表的長度賦給length
i = 0 #循環變量i初值為0
while i < length: #當i小于length時循環
print(schoolbag[i]) #輸出列表元素
i += 1 #循環變量加1
【問題分析】 使用len()函數獲取列表的長度,作為while循環的次數。
列表的遍歷
3.2
1.使用while循環遍歷列表
【運行結果】 程序運行結果如圖4-9所示。
圖4-9 例4-8程序運行結果
列表的遍歷
3.2
使用for循環遍歷列表,只需將要遍歷的列表作為for循環表達式中的序列即可。
2.使用for循環遍歷列表
【例4-9】 使用for循環輸出書包中的每項物品。
【參考代碼】
#創建書包列表schoolbag并賦值
schoolbag = ['語文書', '數學書', '英語書', '漫畫書']
for item in schoolbag: #將列表作為for循環表達式中的序列
print(item) #輸出item
【運行結果】 程序運行結果如圖4-10所示。
圖4-10 例4-9程序運行結果
列表的基本操作
3.3
列表可使用append()、extend()或insert()方法來添加元素。
(1)append()方法:在列表末尾添加新的元素,其語法格式如下。
list.append(obj)
1.添加元素
其中,list表示列表,obj表示添加到列表末尾的對象。例如:
number = [0, 1, 2, 3] #創建列表number并賦值
number.append(4) #使用append()方法給number末尾添加元素4
print(number) #輸出number,結果為[0, 1, 2, 3, 4]
(2)extend()方法:在列表末尾一次性添加另一個序列中的多個值(用新列表擴展原來的列表),其語法格式如下。
list.extend(seq)
其中,list表示列表,seq表示添加到列表末尾的序列。
列表的基本操作
3.3
1.添加元素
【例4-10】 在書包中再放入練習冊和筆盒。
【問題分析】 創建書包列表schoolbag、練習冊列表workbook和筆盒列表penbox,其中,workbook包含語文練習冊和數學練習冊,penbox包含鉛筆、油筆和橡皮。使用extend()方法將workbook列表添加到schoolbag中,使用append()方法將penbox添加到schoolbag中。
列表的基本操作
3.3
1.添加元素
【參考代碼】
#創建書包列表schoolbag并賦值
schoolbag = ['語文書', '數學書', '英語書', '漫畫書']
print(schoolbag) #輸出schoolbag
#創建練習冊列表workbook并賦值
workbook = ['語文練習冊', '數學練習冊']
penbox = [‘鉛筆’, ‘油筆’, ‘橡皮’] #創建筆盒列表penbox并賦值
#使用extend()方法將workbook添加到schoolbag中
schoolbag.extend(workbook)
print(schoolbag) #輸出schoolbag
#使用append()方法將penbox添加到schoolbag中
schoolbag.append(penbox)
print(schoolbag) #輸出schoolbag
列表的基本操作
3.3
1.添加元素
【運行結果】 程序運行結果如圖4-11所示。
圖4-11 例4-10程序運行結果
【程序說明】 使用extend()方法時,是將workbook看作一個序列,將這個序列和schoolbag序列合并,因此,添加元素后,schoolbag中包含了6個元素。使用append()方法時,是將penbox看作一個對象,整體打包添加到schoolbag列表中,因此,添加元素后schoolbag中包含了7個元素,其中第7個元素是一個列表。
列表的基本操作
3.3
2.刪除元素
number = [1, 2, 3, 4, 5] #創建列表number并賦值
del number[2] #使用del命令刪除number中索引為2的元素
print(number) #輸出number,結果為[1, 2, 4, 5]
(1)del命令:根據索引刪除列表中的元素。例如:
number = [1, 2, 3, 4, 5] #創建列表number并賦值
del number[1:3] #使用del命令刪除索引從1到3(不含)的元素
print(number) #輸出number,結果為[1, 4, 5]
del命令還可以使用分片的方式刪除列表中的元素。例如:
列表的基本操作
3.3
2.刪除元素
list.pop([index])
(2)pop()方法:根據索引刪除列表中的元素,并返回該元素的值,其語法格式如下。
number = [1, 2, 3, 4, 5] #創建列表number并賦值
number.pop() #使用pop()方法刪除number中的元素,返回值為5
print(number) #輸出number,結果為[1, 2, 3, 4]
number.pop(0) #使用pop()方法刪除number中索引為0的元素,返回值為1
print(number) #輸出number,結果為[2, 3, 4]
其中,list表示列表,index表示刪除列表元素的索引值,為可選參數,缺省時為 1,刪除列表中的最后一個元素。例如:
列表的基本操作
3.3
2.刪除元素
list.remove(obj)
(3)remove()方法:刪除列表中某個值的第一個匹配項,其語法格式如下。
其中,list表示列表,obj表示列表中要刪除的對象。
【例4-11】 從書包中拿走英語書和漫畫書。
【問題分析】 使用pop()方法刪除“英語書”,使用remove()方法刪除“漫畫書”。
列表的基本操作
3.3
2.刪除元素
【參考代碼】
#創建書包列表schoolbag并賦值
schoolbag = ['語文書', '數學書', '英語書', '漫畫書']
print(schoolbag) #輸出schoolbag
schoolbag.pop(2) #使用pop()方法刪除索引為2的元素“英語書”
print(schoolbag) #輸出schoolbag
schoolbag.remove('漫畫書') #使用remove()方法刪除元素“漫畫書”
print(schoolbag) #輸出schoolbag
【運行結果】 程序運行結果如圖4-12所示。
圖4-12 例4-11程序運行結果
列表的基本操作
3.3
3.分片賦值
number = [1, 2, 3, 4] #創建列表number并賦值
print(number) #輸出number,結果為[1, 2, 3, 4]
number[2:] = [5, 6, 7] #替換索引從2開始到最后的元素
print(number) #輸出number,結果為[1, 2, 5, 6, 7]
分片賦值就是以分片的形式給列表賦值,可以一次為多個元素賦值。例如:
number = [1,7] #創建列表number并賦值
#在number中索引為1的位置插入列表[2,3,4,5,6]中的元素
number[1:1] = [2,3,4,5,6]
print(number) #輸出number,結果為[1, 2, 3, 4, 5, 6, 7]
分片賦值還可以在不替換任何原有元素的情況下插入新的元素。
列表的基本操作
3.3
3.分片賦值
number = [1, 2, 3, 4, 5, 6, 7] #創建列表并賦值
number[1:6] = [] #用空列表替換number中索引1到索引6(不含)的元素
print(number) #輸出number,結果為[1, 7]
分片賦值也可以刪除元素。
列表的基本操作
3.3
4.列表排序
(1)reverse()方法:將列表中的元素反向存放,其語法格式如下。
list.reverse()
其中,list表示列表,該方法沒有參數,沒有返回值。例如:
number = [1,2,3,4] #創建列表number并賦值
number.reverse() #使用reverse()方法將number中的元素反向存放
print(number) #輸出number,結果為[4, 3, 2, 1]
(2)sort()方法:將列表中的元素進行排序(默認為升序排序),其語法格式如下。
list.sort([key=None][,reverse=False])
其中,list表示列表;key為可選參數,如果指定了該參數,會使用該參數的方法進行排序;reverse為可選參數,表示是否降序排序,缺省時為False。
列表的基本操作
3.3
4.列表排序
【例4-12】 將數字從大到小排序,將英文單詞從短到長排序。
【問題分析】 降序排序須指定參數reverse為True,要以序列內元素的長度來排序,須使用參數key指定排序依據為len()函數。
【參考代碼】
#創建數字列表number并賦值
number = [5, 6, 9, 3, 12, 15, 18, 20, 35, 62]
number.sort(reverse=True) #使用sort()方法對number降序排序
print(number) #輸出number
#創建英文單詞列表words并賦值
words = ['chicken', 'fox', 'duck', 'dog', 'rabbit', 'sheep']
words.sort(key=len) #使用sort()方法對words按長度升序排序
print(words) #輸出words
列表的基本操作
3.3
4.列表排序
【運行結果】 程序運行結果如圖4-13所示。
圖4-13 例4-12程序運行結果
列表的基本操作
3.3
4.列表排序
(3)sorted()函數:與sort()方法不同,內置函數sorted()返回新列表,并不對原列表進行任何修改,其語法格式如下。
sorted(iterable[,key=None][,reverse=False])
其中,iterable表示可迭代對象,如列表;參數key和reverse的用法與sort()方法中的相同。例如:
number = [1, 5, 2, 3, 4] #創建列表number并賦值
#將number中的元素升序排序后賦給變量number_new
number_new = sorted(number)
print(number) #輸出number,結果為[1, 5, 2, 3, 4]
print(number_new) #輸出number_new,結果為[1, 2, 3, 4, 5]
PART 04
被束縛了的元組
元組的創建和訪問
4.1
創建元組常用的方法是將逗號分隔的不同元素用圓括號括起來,也可省略圓括號,直接使用逗號分隔元素。例如:
x = ('a', 'b', 1, 2, 3) #創建元組x
print(x) #輸出x,結果為('a', 'b', 1, 2, 3)
y = 'a', 'b', 'c', 'd' #創建元組y時省略了圓括號
print(y) #輸出y,結果為('a', 'b', 'c', 'd')
如果要定義一個空元組,可以使用沒有元素的圓括號來表示。例如:
x = () #創建空元組x
print(x) #輸出x,結果為()
1.創建元組
元組的創建和訪問
4.1
與列表類似,可以使用下標索引來訪問元組中的元素。例如:
x = ('a', 1, 3.14) #創建元組x
print(x[0]) #輸出索引為0的元素,結果為“a”
print(x[1]) #輸出索引為1的元素,結果為1
print(x[-1]) #輸出索引為-1的元素,結果為3.14
2.訪問元組
元組的合并和遍歷
4.2
元組中的元素值是不允許修改的,但可以對元組進行連接組合。例如:
x = (1, 2, 3) #創建元組x
y = ('a', 'b') #創建元組y
z = x + y #將x和y進行連接組合后賦給z
print(z) #輸出z,結果為(1, 2, 3, 'a', 'b')
1.合并元組
元組的合并和遍歷
4.2
2.遍歷元組
【例4-13】 使用元組保存月份信息并輸出。
【參考代碼】
#創建元組months
months = ('January', 'February', 'March', 'April', 'May',
'June', 'July', 'August', 'September', 'October',
'November', 'December')
print('months索引為1的元素', months[1]) #輸出months索引為1的元素
print('months索引為7的元素', months[7]) #輸出months索引為7的元素
for month in months: #循環
print(month, end=' ') #輸出元素
元組的合并和遍歷
4.2
2.遍歷元組
【例4-13】 使用元組保存月份信息并輸出。
圖4-14 例4-13程序運行結果
PART 05
有身份的字典
字典的創建
5.1
直接賦值創建字典的語法格式如下。
變量名 = {鍵1: 值1, 鍵2: 值2, 鍵3: 值3,……}
字典的元素放在大括號中,元素之間用逗號分隔,“鍵”與“值”之間用冒號分隔。例如,創建一個學生信息字典,包括學生學號、姓名和年齡3個元素,可以用下面代碼實現。
#創建字典stu_info
stu_info = {'num': '20210101', 'name': '小藍', 'age': 10}
1.直接賦值創建字典
字典是Python中常用的一種數據存儲結構,它由“鍵-值”對組成,表示一種映射關系,每個“鍵-值”對稱為一個元素。其中,“鍵”可以是Python中任意不可變數據類型,如數字、字符串、元組等,但不能是列表、集合、字典等可變數據類型;“值”可以是任意數據類型。
字典的創建
5.1
使用內置函數dict()可通過其他字典、“(鍵,值)”對的序列或關鍵字參數來創建字典。例如,通過下面5種方式使用dict()函數可創建相同的字典。
#直接賦值創建字典
stu_info1 = {'num': '20210101', 'name': '小藍', 'age': 10}
#通過其他字典創建
stu_info2 = dict(stu_info1)
#通過“(鍵,值)”對的列表創建
stu_info3 = dict([('num','20210101'),('name','小藍'),('age',10)])
#通過關鍵字參數創建
stu_info4 = dict(num = '20210101', name = '小藍', age = 10)
#通過dict和zip結合創建
stu_info5 =dict(zip(['num','name','age'],['20210101','小藍',10]))
2.使用內置函數dict()創建字典
字典的創建
5.1
3.使用fromkeys()方法創建字典
在Python中,當所有鍵對應同一個值時,可使用fromkeys()方法創建字典,其語法格式如下。
dict.fromkeys(seq[,value])
其中,seq為字典的“鍵”的列表;value為鍵對應的同一值,缺省時默認為None。例如:
#創建字典,“值”默認為None
stu_age1 = dict.fromkeys(['小藍', '小舞'])
#輸出stu_age1,結果為{'小藍': None, '小舞': None}
print(stu_age1)
#創建字典,“值”賦為10
stu_age2 = dict.fromkeys(['小藍', '小舞'], 10)
#輸出stu_age2,結果為{'小藍': 10, '小舞': 10}
print(stu_age2)
字典的訪問
5.2
1.根據鍵訪問值
字典中的“鍵”可作為下標訪問對應的“值”,如果字典中不存在這個“鍵”則會拋出異常,其語法格式如下。
dict[key]
其中,dict表示字典名,key表示要查找的鍵。例如:
#創建字典
stu_info = {'num': '20210101', 'name': '小藍', 'age': 10}
stu_info['num'] #根據num獲取學號,結果為“20210101”
stu_info['name'] #根據name獲取姓名,結果為“小藍”
字典的訪問
5.2
2.使用get()方法訪問值
在訪問字典時,若不確定字典中是否有某個鍵,可通過get()方法獲取,若該鍵存在,則返回其對應的值,若不存在,則返回默認值,其語法格式如下。
dict.get(key[,default = None])
其中,dict表示字典名;key表示要查找的鍵;default表示默認值,如果指定鍵的值不存在,返回該默認值,當default缺省時,返回None。例如,使用get()方法訪問前面定義的stu_info字典,可以用下面代碼實現。
stu_info.get('name') #使用get()方法獲取學生姓名,結果為“小藍”
stu_info.get('sex') #使用get()方法獲取學生性別,返回值為None
stu_info.get('sex', '女') #設置返回默認值為“女”,返回值為“女”
字典的訪問
5.2
2.使用get()方法訪問值
【例4-14】 創建中英文字典,根據輸入的中文詞組輸出對應的英文單詞。
【參考代碼】
chinese = ['卷心菜', '午餐', '機器人', '天空', '花'] #創建中文詞組列表chinese
english = ['cabbage', 'lunch', 'robot', 'sky', 'flower'] #創建英文單詞列表english
dictionary = dict(zip(chinese, english)) #使用dict()和zip()方法生成字典
word = input('請輸入中文詞組:') #輸入中文詞組,并賦給word
print(dictionary.get(word)) #使用get()方法獲取word的值并輸出
【問題分析】 創建兩個列表分別保存中文詞組(鍵)和英文單詞(值),要求兩個列表一一對應;然后通過dict()和zip()函數創建字典;最后根據輸入的中文詞組,使用get()方法獲取對應的值并輸出。
字典的訪問
5.2
2.使用get()方法訪問值
【運行結果】 程序運行結果如圖4-15所示。
圖4-15 例4-14程序運行結果
字典的基本操作
5.3
1.修改和添加元素
當以指定“鍵”為下標給字典元素賦值時,有下面兩種含義。
(1)若該“鍵”在字典中存在,則表示修改該“鍵”對應的值。
(2)若該“鍵”不存在,則表示添加一個新的“鍵-值”對,即添加一個新元素到字典中。例如:
#創建字典
stu_info = {'num': '20210101', 'name': '小藍', 'age': 10}
stu_info['age'] = 11 #修改age的值
print(stu_info['age']) #輸出修改后的age值,結果為11
stu_info['sex'] = '女' #添加學生性別
#輸出添加后的字典,結果為{'num': '20210101', 'name': '小藍', 'age': 11, 'sex': '女'}
print(stu_info)
字典的基本操作
5.3
2.刪除元素
(1)del命令:根據“鍵”刪除字典中的元素,例如:
#創建字典
stu_info={'num': '20210101', 'name': '小藍','age': 10}
del stu_info['age'] #刪除age“鍵-值”對
#輸出刪除后的字典,結果為{'num': '20210101', 'name': '小藍'}
print(stu_info)
字典的基本操作
5.3
2.刪除元素
(2)clear()方法:刪除字典中的所有元素,其語法格式如下。
dict.clear()
其中,dict表示字典名。該方法不包含任何參數,也沒有返回值。例如:
#創建字典
stu_info = {'num': '20210101', 'name': '小藍', 'age': 10}
stu_info.clear() #清空字典
print(stu_info) #輸出清空后的字典,結果為{}
字典的基本操作
5.3
2.刪除元素
(3)pop()方法:刪除指定的“鍵-值”對,并返回該“鍵”的值,其語法格式如下。
dict.pop(key[,default])
其中,dict表示字典名;key表示刪除的鍵;default是默認值,當字典中沒有要刪除的key時,該方法返回指定的默認值。例如:
#創建字典
stu_info = {'num': '20210101', 'name': '小藍', 'age': 10}
stu_info.pop('age') #刪除age“鍵-值”對,并返回age的值10
stu_info.pop('age', 11) #無指定鍵,返回默認值11
字典的基本操作
5.3
2.刪除元素
(4)popitem()方法:隨機刪除并返回一個“鍵-值”對,其語法格式如下。
dict.popitem()
其中,dict表示字典名。該方法無參數,返回值為一個隨機的“鍵-值”對。例如:
#創建字典
stu_info = {'num': '20210101', 'name': '小藍', 'age': 10}
stu_info.popitem() #隨機刪除并返回某“鍵-值”對,如('age', 10)
#輸出字典,結果為{'num': '20210101', 'name': '小藍'}
print(stu_info)
字典的基本操作
5.3
3.更新字典
update()方法用于將新字典的“鍵-值”對一次性全部添加到當前字典中,如果兩個字典中存在相同的“鍵”,則以新字典中的“值”更新當前字典,其語法格式如下。
dict.update(dict1)
其中,dict表示當前字典,dict1表示新字典。例如:
#創建字典stu_info
stu_info = {'num': '20210101', 'name': '小藍', 'age': 10}
#修改age的值,同時添加新元素
stu_info.update({'age': 11, 'sex': '女'})
#輸出字典,結果為{'num': '20210101', 'name': '小藍', 'age': 11, 'sex': '女'}
print(stu_info)
字典的基本操作
5.3
3.更新字典
【例4-15】 更新中英文字典。
【參考代碼】
dictionary = {
'卷心菜': 'cabbage',
'午餐': 'lunch',
'機器人': 'robot',
'天空': 'sky',
'花': 'flower'
} #創建字典dictionary并賦值
print(dictionary) #輸出dictionary
dictionary.pop('卷心菜') #刪除“卷心菜”鍵-值對
print(dictionary) #輸出dictionary
字典的基本操作
5.3
3.更新字典
【參考代碼】(續)
#添加新字典
dictionary.update({'公園': 'park', '橋': 'bridge'})
print(dictionary) #輸出dictionary
dictionary['午餐'] = ['lunch', 'nooning'] #修改“午餐”的值
print(dictionary) #輸出dictionary
【運行結果】 程序運行結果如圖4-16所示。
圖4-16 例4-15程序運行結果
字典的基本操作
5.3
4.復制字典
復制字典可使用copy()方法,返回字典的淺復制,其語法格式如下。
dict.copy()
其中,dict表示需要復制的字典,該方法無參數,返回一個新字典。例如:
#創建字典stu_info
stu_info = {'num': '20210101', 'name': '小藍', 'age': 10}
stu_info1 = stu_info.copy() #復制stu_info,并賦給stu_info1
#輸出stu_info1,結果為{'num':'20210101','name':'小藍', 'age': 10}
print(stu_info1)
字典的基本操作
5.3
4.復制字典
【例4-16】 使用直接賦值、淺復制和深復制3種方法復制中英文字典。
【參考代碼】
import copy #導入copy模塊
#創建字典dictionary并賦值
dictionary = {'卷心菜': 'cabbage', '午餐': ['lunch', 'nooning']}
dictionary1 = dictionary #直接復制
dictionary2 = dictionary.copy() #淺復制
dictionary3 = copy.deepcopy(dictionary) #深復制
#將dictionary中鍵為“卷心菜”的值改為“pamphrey”
dictionary['卷心菜'] = 'pamphrey'
字典的基本操作
5.3
4.復制字典
【參考代碼】(續)
#移除dictionary中鍵為“午餐”的值列表中的“nooning”
dictionary['午餐'].remove('nooning')
print('dictionary = ', dictionary) #輸出dictionary
print('dictionary1 = ', dictionary1) #輸出dictionary1
print('dictionary2 = ', dictionary2) #輸出dictionary2
print('dictionary3 = ', dictionary3) #輸出dictionary3
【運行結果】 程序運行結果如圖4-17所示。
圖4-17 例4-16程序運行結果
字典的基本操作
5.3
4.復制字典
【程序說明】 “dictionary1 = dictionary”是復制引用,dictionary和dictionary1都指向同一個對象,如圖4-18所示。因此,修改dictionary中的任何一個值,dictionary1中也會隨之改變。
圖4-18 賦值引用示意圖
字典的基本操作
5.3
4.復制字典
【程序說明】(續) “dictionary2 = dictionary.copy()”是淺復制,dictionary和dictionary2分別是獨立的對象,但它們的子對象還是指向同一對象,如圖4-19所示。因此,修改“dictionary['卷心菜'] = 'pamphrey'”不會改變dictionary2中的值,但修改dictionary中的子對象“dictionary['午餐'].remove('nooning')”時,dictionary2也會隨之改變。
圖4-18 賦值引用示意圖
字典的基本操作
5.3
4.復制字典
【程序說明】(續) “dictionary3 = copy.deepcopy(dictionary)”是深復制,dictionary3完全復制了父對象及其子對象,它和dictionary是完全獨立的,如圖4-20所示。因此,修改dictionary中的任何一個值,dictionary3中的值都不會隨之改變。
圖4-20 深復制示意圖
字典的遍歷
5.4
1.遍歷字典中所有的“鍵-值”對
使用item()方法可遍歷字典中所有的“鍵-值”對,該方法以列表形式返回可遍歷的“(鍵,值)”元組,其語法格式如下。
dict.items()
其中,dict表示字典。
2.遍歷字典中所有的鍵
當不需要使用字典中的值時,可使用keys()方法只遍歷字典中的鍵,該方法以列表形式返回字典中所有的鍵,其語法格式如下。
dict.keys()
其中,dict表示字典。
字典的遍歷
5.4
3.遍歷字典中所有的值
當只需要使用字典中的值時,可使用values()方法,該方法以列表形式返回字典中所有的值,其語法格式如下。
dict.values()
其中,dict表示字典。
【例4-17】 輸出中英文字典中所有的中文詞組及其對應的英文單詞、中文詞組和英文單詞。
字典的遍歷
5.4
【參考代碼】
dictionary = {
'卷心菜': 'cabbage',
'午餐': 'lunch',
'機器人': 'robot',
'天空': 'sky',
'花': 'flower'
} #創建字典dictionary并賦值
print('中英文字典中所有中文詞組及其對應的英文單詞')
for item in dictionary.items(): #遍歷“鍵-值”對
print(item) #輸出每個“鍵-值”對
print('中英文字典中所有中文詞組')
for chinese in dictionary.keys(): #遍歷字典所有的鍵
print(chinese, end=' ') #輸出每個鍵
print('\n中英文字典中所有英文單詞')
for english in dictionary.values(): #遍歷字典所有的值
print(english, end=' ') #輸出每個值
字典的遍歷
5.4
【運行結果】 程序運行結果如圖4-21所示。
圖4-21 例4-17程序運行結果
PART 06
獨一無二的集合
集合的創建
6.1
a = {1, 2, 3, 4} #創建集合并賦值
print(a) #輸出集合a,結果為{1, 2, 3, 4}
b = {2, 1, 3, 4, 1, 2} #創建集合并賦值
print(b) #輸出集合b,結果為{1, 2, 3, 4}
由上述代碼可以看出,由于集合元素是無序的,所以集合的輸出結果與定義順序可能不一致。
創建集合只需將逗號分隔的不同元素使用大括號括起來即可。例如:
集合的基本操作
6.2
1.添加和刪除元素
與字典類似,Python也提供了多種函數和方法用于集合元素的添加和刪除,具體操作的函數和方法如表4-5所示。
表4-5 集合操作的函數和方法
集合的基本操作
6.2
1.添加和刪除元素
例如:
s = {1, 2, 3} #創建集合并賦值
s.add(4) #添加元素
print(s) #輸出集合,結果為{1, 2, 3, 4}
s.update({4, 5, 6}) #更新當前集合,自動去除重復元素
print(s) #輸出集合,結果為{1, 2, 3, 4, 5, 6}
s.discard(5) #刪除元素,不存在則忽略該操作
print(s) #輸出集合,結果為{1, 2, 3, 4, 6}
s.remove(3) #刪除元素,不存在則拋出異常
print(s) #輸出集合,結果為{1, 2, 4, 6}
s.pop() #刪除并返回一個元素,返回值為1
print(s) #輸出集合,結果為{2, 4, 6}
集合的基本操作
6.2
2.集合運算
內置函數len()、max()、min()、sorted()等也適用于集合,此外,Python中集合還支持數學意義上的交集、并集、差集、補集等運算,具體操作符如表4-6所示。
表4-6 集合類型的操作符
集合的基本操作
6.2
2.集合運算
例如:
a = {1, 2, 3, 4, 5} #創建集合并賦值
b = {1, 2, 6, 7, 8} #創建集合并賦值
print(a & b) #輸出交集,結果為{1, 2}
print(a | b) #輸出并集,結果為{1, 2, 3, 4, 5, 6, 7, 8}
print(a - b) #輸出差集,結果為{3, 4, 5}
print(a ^ b) #輸出補集,結果為{3, 4, 5, 6, 7, 8}
x = {1, 2, 3} #創建集合并賦值
y = {2, 3} #創建集合并賦值
z = {1, 2, 4} #創建集合并賦值
print(x >= y) #判斷y是否為x的子集并輸出,結果為True
print(x <= z) #判斷x是否為z的子集并輸出,結果為False
感謝觀看

展開更多......

收起↑

資源預覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 惠东县| 蕉岭县| 禹州市| 郧西县| 东方市| 晋城| 松溪县| 保靖县| 巴塘县| 南华县| 玉山县| 武川县| 喀喇沁旗| 临夏县| 道孚县| 本溪市| 宜州市| 邢台市| 双牌县| 鄂伦春自治旗| 罗定市| 扎鲁特旗| 平果县| 两当县| 乌鲁木齐市| 宁德市| 胶南市| 宁化县| 吉安市| 无为县| 永年县| 沿河| 新河县| 贡嘎县| 永顺县| 开原市| 古丈县| 江津市| 马龙县| 乌鲁木齐县| 曲阜市|