資源簡介 (共54張PPT)第3章課時9 基本數據結構信息技術課標梳理·微知著教材重點 課標要求 學業質量水平基本數據結構 掌握字符串、列表、字典等基本數據結構的使用方法 2-2教材研析·固基礎1.程序計算時,需要根據數據之間的邏輯關系和處理任務的要求,將各種數據組合成具有一定結構的復合體。如下某數據庫的“課程”數據表中的一條記錄就是一個復合體。2.常用數據結構:字符串、列表、字典。1字符串String1.概念:字符串是0個或多個字符組成的序列。2.要點:(1)字符串是不可變數據:即無法修改字符串的部分內容,必須修改全部的內容。(2)字符串是Python中最常用的數據類型。可以使用引號('或″或 )來創建字符串。(3)創建字符串很簡單,只要為變量分配一個字符串型的值即可。如:var2=″China 2023!″(4)Python不支持單字符類型,單字符在Python中也是作為一個字符串使用。3.求字符串的字符個數函數 描述 范例len(seq) 返回序列的長度 len('Runoob')=64.訪問字符串中的值:通過索引(“切片”)。(1)索引:標識每個字符在字符串中的位置。①正索引(左 右):0起始②負索引(左 右):-1起始(2)“切片”:使用方括號 []和索引實現從字符串中取子串。 ①格式字符串“切片”的語法格式:字符串變量名[頭索引:尾索引:步長]范例:取str中的“N”的表達式為str[2]·范例1:“切片”取字符串'Runoob'中的'u'和'un'>>>s='Runoob'>>>s[1:2:1]'u'>>>s[1:3]'un'·范例2:“切片”取字符串'Runoob'中的'uob'>>>s='Runoob'>>>s[1::2]'uob'·范例1:逆向“切片”取字符串'Runoob'中的'n'和'nu'>>>s='Runoob'>>>s[-4:-5:-1]'n'>>>s[-4:-6:-1]'nu'·范例2:逆向“切片”取字符串'Runoob'中的子串'bn'>>>s='Runoob'>>>s[-1:-4:-3]'b'>>>s[-1:-5:-3]'bn'典例1 變量a指向字符串對象'Python',從該字符串中取'Pn',表達式為______________________。a[0:6:5]或a[:6:5]或a[::5]典例2 變量a指向字符串對象'Python',正向取該字符串中的全部字符,表達式為___________或_________或________或______或_____。a[0:6:1]a[:6:1]a[::1]a[::]a[:]典例3 變量a指向字符串對象'Python',逆向取該字符串中的全部字符,正確的表達式為_____________或___________或______________________。a[-1:-7:-1]a[:-7:-1]a[::-1](答案不唯一)5.Python 字符串更新可以截取字符串的一部分并與其他字符串拼接。運行實例如下:典例4 字符串變量s=″Hello world″,如果想將字符串變量s中的字符″w″改成大寫″W″,下列操作可行的是( )A.s=s[0:6]+″W″+s[7::]B.s[6]=″W″C.s[7]=″W″D.s=s[1:7]+″W″+s[8::]解析 我們可以訪問字符串中的單個字符,但卻不可以對其進行修改,因此選項B,C是錯誤的,字符串的正索引是從0開始進行編號的,所以答案選A。A典例5 有Python代碼如下:a='ABCD'a[1]='W'print(a)則運行代碼后,結果為________________。程序將出錯解析 代碼:a[1]='W'無法執行,因為字符串不能修改部分內容,必須修改其全部內容。2列表List1.定義:列表是最常用的Python數據類型。它是一個由0個或多個元素組成的1個序列整體,序列中的每個值都有對應的位置值,稱之為索引,第一個索引是0,第二個索引是1,依此類推。2.要點:(1)列表是可變數據。(2)列表的數據項(元素)不需要具有相同的類型→異質。(3)列表的元素可以是數字、字符串等混合類型的數據,甚至可以是其他的列表(如下圖所示)。3.創建列表:把逗號“,”分隔的不同的數據項使用方括號“[]”括起來即可。如下所示:list1=['Google','Runoob',2023,2024]list2=[1,2,3,4,5 ]list3=[″a″,″b″,″c″,″d″]list4=['red','green','blue','yellow','white','black']范例:list1[1]表示列表list1中第2個元素('Runoob')。4.Python內建函數(1)確定序列的長度:len(列表名)(2)確定最大元素:max(列表名)(3)確定最小元素:min(列表名)(4)求數值型列表的和:sum(列表名)(5)求列表中某個元素出現的次數:列表名.count(統計的元素)(6)將字符串轉換為列表:list(字符串)范例>>> list2=[1,2,3,4,5 ]>>> max(list2)5>>> min(list2)1>>> len(list2)5>>> sum(list2)15>>>a=['中國','浙江','杭州','浙江']>>>a.count('浙江')>>>2>>>s='我愛我的祖國!'>>>list(s)['我','愛','我','的','祖','國','!']5.索引(訪問列表中的元素):與字符串相似。通過索引列表可以進行截取、組合。(1)正向:從左側頭部開始,左側第1個元素索引為0。(2)反向:從右側尾部開始,右側第1個元素索引為-1,往左為-2、-3、-4、…。6.切片:取列表中的一段值(1)正向切片(步長為正)①格式:列表名[頭索引:尾索引:步長]②要點·頭索引省略,表示從最前面索引為0的項開始切片。·尾索引省略,表示向右取完。·步長表示取值時相鄰2項的跨度,省略時默認為1。典例6 下圖所示名為nums列表的第3、4、5、6、7個值正向切片,運行結果為[30,40,50,60,70],則切片表達式為____________________。nums10 20 30 40 50 60 70 80 90 some_nums30 40 50 60 70nums[2:7](答案不唯一)解析 觀察圖片可知切片元素的索引為2~6,根據“前閉后開”規則,所以切片表達式中頭索引為2,尾索引為6的后一個元素索引7。典例7 取列表nums的第3、5、7個值正向切片,運行結果為[30,50,70],則切片表達式為______________________。 nums10 20 30 40 50 60 70 80 90nums[2:7:2](答案不唯一)解析 要取的值跨度為2,所以步長為2;切片頭索引和尾索引的確定同上典例6。典例8 取列表nums的第7個值往前到第1值的正向切片,運行結果為[10,20,30,40,50,60,70],則切片表達式為____________________________________________。 nums[0:7:1](或nums[:7:1] 或 nums[:7:] 或 nums[:7])解析 第1個值的索引為0 頭索引為0(可以省略);第7個值的索引為6,“前閉后開” 尾索引為7;相鄰2元素跨度為1 步長為1(可以省略)。(2)逆向切片(步長為負)①格式:列表名[頭索引:尾索引:步長]②要點·頭索引省略,表示從最右面索引為-1的項開始切片。·尾索引省略,表示向左取完。典例9 取列表values的第5、4、3個值逆向切片,運行結果為['white','yellow', 'blue'],則切片表達式為____________________________。values[-2:-5:-1](答案不唯一)解析 values[-2:-5:-1]這個答案使用的是負索引的逆向切片,第5個值的反向索引是-2 頭索引為-2;第3個值的反向索引是-4,根據“前閉后開”規則,尾索引為其左側元素索引-5;逆向切片向量2元素跨度為1 步長為-1。 values[-2:-5:-1]。values[4:1:-1]這個答案使用的索引是正索引的逆向切片。典例10 取values列表的第5 3個值跨度2逆向切片,運行結果為['white', 'blue'],則切片表達式為__________________________。values[-2:-5:-2](答案不唯一)解析 相鄰2元素的跨度為2 步長為-2。典例11 取values列表的第5 1個值跨度1逆向切片,運行結果為['white', 'yellow','blue','green','red'],則切片表達式為________________________。 values[-2:-7:-1](答案不唯一)解析 向左取完,所以尾索引為-7或者省略(使用正向索引的逆向切片時,頭索引為4,尾索引省略)。典例12 取values列表的第6 3個值跨度1逆向切片,運行結果為['black', 'white','yellow','blue'],則切片表達式為____________________________。 values[-1:-5:-1](答案不唯一)解析 向右取完,所以頭索引為-1或者省略(使用正索引的逆向切片時,頭索引為最右側元素正索引值5,根據“前閉后開”規則,尾索引為第3個元素的左側元素索引值1)。典例13 取values列表所有值的逆向切片,運行結果為['black','white','yellow', 'blue','green','red'],則切片表達式為________________________________。 values[-1:-7:-1](答案不唯一)解析 使用負索引時,頭索引為-1或者省略。尾索引為最左側元素索引值-6的下一個索引值-7,或者省略。相鄰2元素跨度為1,逆向切片,步長為-1。7.更新列表(1)對列表的數據項進行修改。格式:列表名[元素索引值]=元素值。典例14 有如下Python程序段:list1=['Google','Runoob',1997,2000]list1[2]=2023print(list1)執行后,輸出的結果為____________________________。['Google','Runoob',2023,2000]解析 list1[2]=2023是將列表中索引為2的元素(第3個元素)替換為2023,所以print函數輸出列表時,原來第3個元素的值從1997變為2023。(2)添加列表項。使用append()方法往列表尾部添加一個新元素。格式:列表名.append(元素值)。典例15 有如下Python程序段:list1=['G','R','T']list1.append('B')print(list1)執行后,輸出的結果為______________。['G','R','T','B']解析 list1.append('B')是在原列表的最后添加一個新的元素'B'。(3)插入列表元素。格式:列表名[插入位置索引:插入位置索引]=元素值。往當前列表的某個位置插入列表或字符串時,被插入列表的每項、字串的每個字符都會作為list1的一個元素,而不會整體插入。(4)列表拼接。使用腳本操作符“+”,在現有列表尾部拼接另一個列表對象,格式:列表名=列表名+拼接列表對象(或者“拼接列表名”)。典例16 若list1=[1,2,3],list2=[4,5],則list1+list2的結果是______________。 [1,2,3,4,5]解析 符號“+”的作用是將list2拼接于list1尾部。典例17 火柴棍游戲。用火柴棍拼成數字0~9,具體拼法如圖所示:編寫Python程序實現:運行程序時,輸入任意兩位正整數,輸出所需火柴棍的數量。完善下列代碼:num=int(input(″請輸入一個兩位正整數:″))match=″6255456376″a=num%10b=①________count=②_______________________print(″共需火柴棍:″,count)結合代碼,輸入一個兩位正整數,輸出所需火柴棍數量最多,則輸入的兩位正整數為③____。 num//10int(match[a])+int(match[b])88解析 本題考查運算符及列表的綜合應用。a、b分別表示所輸正整數個位和十位的數字,故b=num//10;列表元素的訪問,第1個元素的索引號為0,對應數字0所需火柴棍的數量,所以該兩位正整數對應火柴棍的總數量為int(match[a])+int(match[b]);從match=“6255456376”可知數字8使用火柴棍的數量最多,確定答案為88。(5)重復列表。使用腳本操作符“*”重復列表。格式:列表名*重復的遍數。典例18 寫出下列Python語句的輸出結果:print(['a','b'] 3)①________________________print([1,2,3] 3)②________________________['a','b','a','b','a','b'][1,2,3,1,2,3,1,2,3] 解析 腳本操作符“ ”用于重復列表,所以['a','b'] 3是將列表['a','b']重復了3遍;[1,2,3] 3是將列表[1,2,3]重復了3遍。(6)嵌套列表。在主列表里嵌套其他子列表。格式為:主列表名=[子列表1,[子列表2,子列表3,……],……]★取子列表中某個元素。格式為:主列表名[主列表中子列表相應的索引值][所取元素在子列表中的索引值]典例19 結合上圖,寫出下列Python語句的輸出結果:print(x[1])①_____________print(x[1][2])②_______[1,2,3]3解析 語句x=[a,n]是將列表a和列表n嵌套在了列表x中,列表a作為x的第1個元素(索引為0),列表n是x的第2個元素(索引為1),print(x[1])是要輸出列表x中索引值為1的元素,即列表n;print(x[1][2])是要輸出列表x中索引值為1的元素(列表n)中索引值為2的元素(第3個),即列表n[1,2,3]中的第3個元素3。(7)檢查成員。使用成員運算符“in”/“not in”檢查對象是/不是列表成員。典例20 有如下Python程序段:a=['a','b','c']n=[1,2,3]a=a+nprint(2 in a,'b' not in n)執行后,輸出的結果為___________。True True解析 語句a=a+n用于將列表n中的元素拼接在列表a的后面,a列表為['a','b', 'c',1,2,3],所以2是a的成員,表達式“2 in a”的值為True;'b'不是列表n [1,2,3]中的成員,所以表達式“'b' not in n”的值為True。3字典Dictionary1.定義:字典是由0個或多個元素組成的序列。每個元素是一個鍵值對,每個鍵值對的鍵和值之間用冒號“:”分隔,相鄰兩個鍵值對之間用逗號“,”分隔,整個字典包括在大括號 {} 中。 2.創建字典 字典名={鍵1:值1,鍵2:值2,…,鍵n:值n} 范例:inf={'姓名':'楊成器','性別':'男','單位':'國家電網','Tel':17706730306}3.特點(1)字典是可變數據。(2)鍵和值是一一對應的。(3)一個字典中,鍵必須是唯一的,但值則不必 同一個值可以對應多個鍵,但不允許同一個鍵出現多次,若創建時同一個鍵被賦值多次,則記錄其最后1個值。(4)值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字等,而不能用列表等可變對象。4.訪問字典里的值:字典名[與訪問值相應的鍵名]。典例21 有如下Python程序段:inf={'姓名':'楊成器','性別':'男','單位':'國家電網','年齡':25}print(inf['單位'],inf['年齡'])執行后,輸出的結果為______________。 國家電網 25解析 inf['單位']是訪問名為“inf”的字典中鍵為“單位”的值 “國家電網”(print函數輸出結果時,字符串不帶引號)。inf['年齡']同理。典例22 有如下Python程序段:color={'R':210,'G':120,'B':80,'R':245}print(color['R'])執行后,輸出的結果為_____。 245解析 字典中,鍵必須是唯一的,不允許同一個鍵出現多次,若創建字典時同一個鍵被賦值多次,則記錄其最后1個值。字典color中,鍵“R”出現了2次,記錄它第2次的值245。5.修改某個鍵的值格式:字典名[要修改的鍵名]=新值典例23 有如下Python程序段:color={'G':120,'B':80,'R':245}color['R']=198print(color['R'])執行后,輸出的結果為_____。198解析 語句“color['R']=198”將鍵“R”的值修改為198。6.添加元素格式:字典名[新鍵]=新值典例24 有如下Python程序段:book={'書名':'射雕英雄傳','作者':'金庸','類別':'武俠'}________________print(book)執行后,輸出的結果為:{'書名': '射雕英雄傳','作者': '金庸','類別': '武俠','售價': 92}。則劃線處代碼應為_______________。book['售價']=92解析 輸出結果中的字典比原來的字典在最后多了1個新元素,添加元素的格式為:字典名[新鍵]=新值,所以在print函數輸出結果前,語句“book['售價']=92”添加了鍵為“售價”、值為92的新元素。7.常用內置函數(1)len(字典名):計算字典元素個數,即鍵的總數。典例25 有如下Python程序段:book={'書名':'射雕英雄傳','作者':'金庸','類別':'武俠','售價':92}print(len(book))執行后,輸出的結果為______。 (2)str(字典名):將字典作為字符串輸出4解析 “len(book)”用于統計字典“book”的元素個數,book字典有4個用逗號分隔的元素。典例26 字典dic中“鍵”存儲的是小組成員姓名,“值”是各成員對應的年齡,具體如下:dic={'Michael':32,'Sarah':26,'Tracy':35,'Bob':36,'Jack':18}現在請你根據題意,寫出下面相應的Python程序代碼。①輸出姓名為'Sarah'的年齡________________________________。 ②修改姓名為'Jack'的年齡,將其更正為19________________________________。 ③添加成員:年齡為17的Tom________________________________。 print(dic['Sarah'])dic['Jack']=19dic['Tom']=17解析 本題考核對字典的訪問,字典通過“鍵”來完成訪問,而“鍵”是唯一的。直接訪問“鍵”'Sarah',輸出其對應的年齡:print(dic['Sarah'])。可以通過字典的“鍵”給字典添加元素,如果字典里已存在該“鍵”的值,則會覆蓋,如果不存在,則會添加新元素。因為存在“鍵”'Jack',所以可以直接更改'Jack'的年齡。由于不存在“鍵”'Tom',所以添加新元素'Tom',同時賦予相應“值”17。 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫