版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
復(fù)合數(shù)據(jù)類型學(xué)習(xí)目標/Target熟練掌握列表、元組、字典、集合的定義與創(chuàng)建方法掌握元組的不可變特性及操作方法,學(xué)會使用元組保存固定結(jié)構(gòu)的數(shù)據(jù)精通字典的鍵值對存儲模式,熟練使用字典實現(xiàn)數(shù)據(jù)的高效檢索與更新
靈活運用列表的增刪改查、排序等基本操作及常用方法學(xué)習(xí)目標/Target熟悉集合的去重、交集、并集等操作,能夠解決數(shù)據(jù)篩選與對比問題
能夠綜合運用多種核心數(shù)據(jù)類型,編寫邏輯清晰、功能完備的Python程序章節(jié)概述/Summary復(fù)合數(shù)據(jù)類型是Python數(shù)據(jù)組織的核心載體。本章聚焦列表、元組、字典、集合等類型,解析其存儲結(jié)構(gòu)、操作特性及適用場景:列表的動態(tài)靈活、元組的不可變性、字典的鍵值映射邏輯、集合的去重與交集運算等。通過案例演示數(shù)據(jù)的增刪改查及嵌套使用,幫助掌握復(fù)雜數(shù)據(jù)的結(jié)構(gòu)化管理能力,為高效處理批量數(shù)據(jù)與業(yè)務(wù)邏輯搭建基礎(chǔ)框架。目錄/Contents010203【案例4-1】城市空氣質(zhì)量監(jiān)測系統(tǒng)【案例4-2】新能源汽車銷量分析【案例4-3】商品庫存管理04【案例4-4】“戲曲研習(xí)社”活動管理【案例4-1】城市空氣質(zhì)量監(jiān)測系統(tǒng)01案例分析在工業(yè)化與城市化的快速發(fā)展下,環(huán)境污染加劇,空氣質(zhì)量成為公眾關(guān)注焦點。為掌握各地區(qū)空氣質(zhì)量,本案例以列表形式存儲不同城市AQI數(shù)據(jù)。以城市為索引,記錄每日AQI數(shù)值、污染物濃度、采集時間與地點等信息。通過菜單驅(qū)動的交互界面,用戶可以對空氣質(zhì)量數(shù)據(jù)進行查看、添加、篩選、排序等操作。知識儲備列表基本操作常用列表方法列表推導(dǎo)式知識儲備知識儲備—常見復(fù)合數(shù)據(jù)類型Python中常用的序列類型主要有3種:字符串(str)、列表(list)和元組(tuple),其中字符串和元組是不可變的序列類型,一旦創(chuàng)建以后其內(nèi)部的元素?zé)o法被修改,列表是可變的序列類型。知識儲備—常見復(fù)合數(shù)據(jù)類型Python中的集合類型與數(shù)學(xué)中的集合概念一致,也具備以上3個特性,它用于存儲一組元素,元素必須唯一,元素可以是無序的。另外,Python要求放入集合中的元素必須是不可變的數(shù)據(jù)類型,例如整型、浮點型、復(fù)數(shù)類型、布爾類型、字符串類型和元組類型,列表、字典及集合類型都屬于可變的數(shù)據(jù)類型,這些類型的數(shù)據(jù)都不能存放到集合中。知識儲備—常見復(fù)合數(shù)據(jù)類型映射類型以鍵值對的形式存儲元素,鍵值對中的鍵與值之間存在映射關(guān)系。在數(shù)學(xué)中,設(shè)A、B是兩個非空集合,若按某個確定的對應(yīng)法則f,可使集合A中的任意一個元素x在集合B中都有唯一確定的對應(yīng)元素y,則稱f為從集合A到集合B的一個映射。字典(dict)是Python唯一的映射類型,字典的鍵必須遵循以下兩個原則。(1)每個鍵只能對應(yīng)一個值,不允許重復(fù)出現(xiàn)。(2)字典中的鍵是不可變的數(shù)據(jù)類型。知識儲備—列表基本操作(1)使用中括號“[]”創(chuàng)建列表使用中括號“[]”可以直接創(chuàng)建一個空列表,示例代碼如下:list1=[]#創(chuàng)建空列表,沒有任何元素在中括號中可以添加一個或多個元素,多個元素之間使用英文逗號分隔。列表的元素不僅可以為整型、浮點型等數(shù)字類型的數(shù)據(jù),而且可以是字符串、列表、元組、字典等組合數(shù)據(jù)類型的數(shù)據(jù),還可以是用戶自定義的數(shù)據(jù)類型。示例代碼如下:list2=['Alice','Bob','Charlie'] #創(chuàng)建包含元素的列表print(list2)list3=[1,'hello',True] #列表中元素可以是不同的數(shù)據(jù)類型print(list3)1.創(chuàng)建列表知識儲備—列表基本操作(2)使用list()函數(shù)創(chuàng)建列表list()函數(shù)需要接收一個可迭代對象,并根據(jù)可迭代對象創(chuàng)建一個列表。如果該函數(shù)沒有接收任何可迭代對象,那么會創(chuàng)建一個空列表。示例代碼如下:list4=list() #list()用于創(chuàng)建空列表print(list4)list5=list('Python') #字符串轉(zhuǎn)換為列表print(list5)list6=list((1,2,3)) #元組轉(zhuǎn)換為列表print(list6)知識儲備—列表基本操作2.訪問列表元素(1)通過索引訪問列表元素索引就像圖書的目錄,閱讀時我們可以借助目錄快速定位到書籍的指定內(nèi)容。索引是Python中最基本和常用的列表訪問方法。通過索引訪問列表中的元素,可以直接獲取或修改列表中的特定元素。通過索引訪問列表元素的語法格式如下:列表名[索引值]使用格式列表的索引支持雙向索引,其中正向索引從0開始,自左向右依次遞增;反向索引從-1開始,自右向左依次遞增。知識儲備—列表基本操作無縫銜接單元測試my_list=['apple','banana','cherry']print(my_list[1]) #正向索引print(my_list[-2]) #反向索引示例2輸出索引值為1和-2的元素。知識儲備—列表基本操作(2)以切片方式訪問列表元素列表切片用于獲取列表中指定范圍內(nèi)的元素,通過指定起始和結(jié)束索引來實現(xiàn)。語法格式如下:列表名[start:stop:step]使用格式其中start表示起始索引(包含該位置元素,默認值為0),stop表示結(jié)束索引(不包含該位置元素,默認值最后一個元素的索引值),step表示步長(默認值為1)。知識儲備—列表基本操作無縫銜接單元測試#初始化列表students=['Alice','Bob','Charlie']#索引操作print("索引為0的元素:",students[0])students[1]='David'print("修改后的列表:",students)#切片操作students=['Alice','Bob','Charlie','David','Eve']print("切片[1:3]的結(jié)果:",students[1:3])print("間隔為2切片的結(jié)果:",students[::2])示例3將students列表中的“Bob”修改為“David”,利用列表的切片規(guī)則獲取students列表中第1至第3個的元素。知識儲備—列表基本操作(3)在循環(huán)中依次訪問元素列表是一個可迭代對象,可以使用for循環(huán)進行遍歷,在遍歷中逐個訪問列表中的元素。無縫銜接單元測試scores=[85,90,78,65]total=0forscoreinscores:total+=scoreprint(f"成績總和為:{total}")示例4定義一個保存成績的列表,使用for循環(huán)遍歷該列表并計算成績總和。知識儲備—列表基本操作無縫銜接單元測試student_scores=[["張三",85,90,78],["李四",76,88,91],["王五",92,87,95],["趙六",88,93,84]]#遍歷輸出所有數(shù)據(jù)forstudentinstudent_scores:print(f"學(xué)生姓名:{student[0]}")print(f"Python基礎(chǔ):{student[1]},數(shù)據(jù)可視化:{student[2]},數(shù)據(jù)庫:{student[3]}")示例5使用for循環(huán)遍歷嵌套列表,輸出學(xué)生姓名及各科成績。知識儲備—列表基本操作合并列表即將多個列表整合為一個列表,常見的方式是使用+運算符。使用+運算符時,會創(chuàng)建一個新的列表,包含兩個列表的所有元素。語法格式如下:列表1+列表2使用格式3.合并列表知識儲備—列表基本操作無縫銜接單元測試list1=[1,2,3]list2=[4,5,6]result1=list1+list2 #使用+運算符print(result1)示例6使用運算符+合并列表。知識儲備—列表基本操作列表的成員運算用于判斷某個元素是否存在于列表中,使用in和notin運算符。in判斷元素是否在列表內(nèi),notin判斷元素是否不在列表內(nèi),返回值為True或False。語法格式如下:元素in列表名元素notin列表名使用格式4.成員運算知識儲備—列表基本操作無縫銜接單元測試my_list=[1,2,3,4]print(2inmy_list)print(5notinmy_list)示例7判斷2和5是否包含在列表my_list中。知識儲備—常用列表方法1.添加元素在Python中,向列表添加元素是常見操作,可根據(jù)不同需求選擇不同的添加方法。append()方法用于在列表末尾添加單個元素;extend()方法用于將另一個可迭代對象的元素逐一添加到列表末尾;insert()方法可以在指定索引位置插入元素,語法格式如下:append(x):將元素x添加到列表末尾。extend(iterable):將可迭代對象iterable中的元素添加到列表末尾。insert(index,x):在索引index處插入元素x。使用格式知識儲備—常用列表方法無縫銜接單元測試#初始化列表my_list=[1,2,3]#使用append()方法my_list.append(4)print("使用append()后:",my_list)#使用extend()方法new_elements=[5,6]my_list.extend(new_elements)print("使用extend()后:",my_list)#使用insert()方法my_list.insert(1,1.5)print("使用insert()后:",my_list)示例8分別使用append()、insert()和extend()方法向my_list列表添加元素。知識儲備—常用列表方法2.刪除元素刪除列表元素的方法多樣,del語句可按索引刪除元素;pop()方法刪除指定索引的元素并返回該元素,若不指定索引則默認刪除最后一個元素;remove()方法根據(jù)元素值刪除第一個匹配的元素;clear()方法用于清空列表中的所有元素。語法格式如下:del列表名[索引]:刪除指定索引的元素。pop([索引]):刪除指定索引的元素并返回,默認刪除最后一個元素。remove(x):刪除列表中第一個值為x的元素。clear():清空列表。使用格式知識儲備—常用列表方法無縫銜接單元測試my_list=[1,2,3,4,5]delmy_list[2]print("使用del后:",my_list)popped_element=my_list.pop(1)print("使用pop()后,彈出的元素:",popped_element)print("使用pop()后,列表剩余元素:",my_list)my_list.remove(4)print("使用remove()后:",my_list)my_list.clear()print("使用clear()后:",my_list)示例9分別使用del語句、remove()和clear()方法刪除列表及列表元素。知識儲備—常用列表方法3.排序排序是對列表元素按一定規(guī)則重新排列的操作。sort()方法會對原列表進行排序,改變原列表的順序;sorted()函數(shù)會返回一個新的排序后的列表,原列表保持不變??梢酝ㄟ^設(shè)置reverse參數(shù)為True實現(xiàn)降序排序。語法格式如下:列表名.sort(key=None,reverse=False):對原列表進行排序。sorted(列表名,key=None,reverse=False):返回一個排序后的新列表。使用格式知識儲備—常用列表方法無縫銜接單元測試my_list=[3,1,4,1,5,9,2,6,5,3,5]my_list.sort()print("使用sort()升序排序后:",my_list)my_list.sort(reverse=True)print("使用sort()降序排序后:",my_list)my_list=[3,1,4,1,5,9,2,6,5,3,5]sorted_list=sorted(my_list)print("使用sorted()升序排序前,原列表:",my_list)print("使用sorted()升序排序后,新列表:",sorted_list)示例10分別使用sort()方法和sorted()函數(shù)對my_list列表進行升序及降序排列。知識儲備—常用列表方法4.反轉(zhuǎn)列表反轉(zhuǎn)列表即將列表中的元素順序顛倒。reverse()方法會直接修改原列表,將其元素順序反轉(zhuǎn);使用切片[::-1]可以創(chuàng)建一個新的反轉(zhuǎn)后的列表,原列表保持不變,語法格式如下:列表名.reverse()新列表=列表名[::-1]使用格式知識儲備—常用列表方法無縫銜接單元測試my_list=[1,2,3,4,5]#使用reverse()方法my_list.reverse()print("使用reverse()后:",my_list)#重新初始化列表my_list=[1,2,3,4,5]#使用切片反轉(zhuǎn)reversed_list=my_list[::-1]print("使用切片反轉(zhuǎn)前,原列表:",my_list)print("使用切片反轉(zhuǎn)后,新列表:",reversed_list)示例11對my_list列表進行反轉(zhuǎn)列表。知識儲備—常用列表方法5.統(tǒng)計元素出現(xiàn)次數(shù)count()方法用于統(tǒng)計列表中某個元素出現(xiàn)的次數(shù),它會遍歷列表,返回指定元素在列表中出現(xiàn)的次數(shù),語法格式如下:列表名.count(x)使用格式知識儲備—常用列表方法無縫銜接單元測試my_list=[1,2,2,3,2,4]count=my_list.count(2)print("元素2出現(xiàn)的次數(shù):",count)示例12統(tǒng)計my_list列表中2的出現(xiàn)次數(shù)。知識儲備—常用列表方法6.查找元素索引index()方法用于查找列表中某個元素第一次出現(xiàn)的索引位置。如果元素不存在于列表中,會拋出ValueError異常。語法格式如下:列表名.index(x[,start[,end]])使用格式my_list=[1,2,3,2,4]index=my_list.index(2)print("元素2第一次出現(xiàn)的索引:",index)示例【示例13】查找元素2第一次出現(xiàn)的索引。知識儲備—列表推導(dǎo)式列表推導(dǎo)式是符合Python語法規(guī)則的復(fù)合表達式,用于以簡潔的方式根據(jù)已有的列表構(gòu)建滿足特定需求的列表。列表推導(dǎo)式的基本格式如下:[表達式for臨時變量in目標對象]語法格式以上格式由表達式及其后面for語句組成,其中for語句用于循環(huán)遍歷目標對象,并將每次遍歷到的元素賦給臨時變量,目標對象必須是一個可迭代對象,例如列表、字符串、元組等;表達式用于在每次循環(huán)中對臨時變量進行處理或者計算,它可以是任何有效的包含運算符的表達式,也可以是變量或者常量。知識儲備—列表推導(dǎo)式創(chuàng)建一個包含0到9的平方的列表,示例代碼如下:squares=[x**2forxinrange(10)]print(squares)示例14知識儲備—列表推導(dǎo)式1.帶有if語句的列表推導(dǎo)式在基本列表推導(dǎo)式的for語句之后添加一個if語句,就組成了帶if語句的列表推導(dǎo)式,其語法格式如下:[表達式for臨時變量in目標對象if判斷條件]語法格式以上列表推導(dǎo)式的執(zhí)行過程是,遍歷目標對象,將訪問到的元素賦給臨時變量,若臨時變量的值符合判斷條件,則按表達式對其進行處理或計算,并將處理或計算后的結(jié)果添加到新列表中。知識儲備—列表推導(dǎo)式創(chuàng)建一個包含列表中所有偶數(shù)的列表(假設(shè)原列表是[1,2,3,4,5,6]),示例代碼如下:numbers=[1,2,3,4,5,6]even_numbers=[numfornuminnumbersifnum%2==0]print(even_numbers)示例15知識儲備—列表推導(dǎo)式2.帶for循環(huán)嵌套的列表推導(dǎo)式在基本列表推導(dǎo)式的for語句之后添加一個for語句,就組成了帶for循環(huán)嵌套的列表推導(dǎo)式,其語法格式如下:[表達式for臨時變量1in目標對象1for臨時變量2in目標對象2]語法格式以上格式中的for語句按從左至右的順序分別是外層循環(huán)和內(nèi)層循環(huán)。利用上述列表推導(dǎo)式可以根據(jù)兩個目標對象快速生成一個新的列表。知識儲備—列表推導(dǎo)式取列表1和列表2中元素的乘積作為列表3的元素,示例代碼如下:list1=[1,2,3]list2=[4,5,6]list3=[x+yforxinlist1foryinlist2]print(list3)示例16案例實現(xiàn)創(chuàng)建名稱為“城市空氣質(zhì)量檢測系統(tǒng)”的項目,在項目下創(chuàng)建名稱為air_quality_testing的Python文件。準備工作案例實現(xiàn)STEP01初始化城市空氣質(zhì)量數(shù)據(jù)列表創(chuàng)建一個包含多個城市空氣質(zhì)量數(shù)據(jù)的二維列表,每個子列表存儲城市名稱、AQI值和空氣質(zhì)量等級。air_quality=[["北京",85,"良"],["上海",60,"良"],["廣州",55,"良"],["深圳",45,"優(yōu)"],["成都",70,"良"],["哈爾濱",110,"輕度污染"]]案例實現(xiàn)STEP02菜單顯示與用戶輸入使用print語句展示功能菜單,呈現(xiàn)空氣質(zhì)量報告,通過input()函數(shù)獲取用戶選擇。原有代碼...whileTrue:print("\n=====城市空氣質(zhì)量監(jiān)測系統(tǒng)=====")print("1.查看所有城市數(shù)據(jù)")print("2.添加新城市數(shù)據(jù)")print("3.查找空氣質(zhì)量最差的城市")print("4.按空氣質(zhì)量等級篩選")print("5.按AQI值排序")print("6.退出")choice=input("請選擇操作(1-6):")案例實現(xiàn)STEP03查看所有城市數(shù)據(jù)(選項1)當用戶選擇1時,遍歷air_quality列表,格式化輸出所有城市數(shù)據(jù);使用f字符串和:<8控制輸出格式,確保列對齊(左對齊,寬度8字符);打印分隔線“-”提升可讀性。whileTrue:原有代碼...ifchoice=="1":print("\n=====城市空氣質(zhì)量報告=====")print(f"{'城市':<8}{'AQI':<8}{'空氣質(zhì)量等級'}")print("-"*28)forcity_datainair_quality:print(f"{city_data[0]:<8}{city_data[1]:<8}{city_data[2]}")案例實現(xiàn)STEP04添加新城市數(shù)據(jù)(選項2)用戶輸入城市名稱和對應(yīng)的AQI數(shù)值,根據(jù)AQI數(shù)值計算空氣質(zhì)量等級,最后將城市、AQI數(shù)值和空氣質(zhì)量等級添加到空氣質(zhì)量數(shù)據(jù)列表中。whileTrue:原有代碼...elifchoice=="2":city=input("城市名稱:")aqi=int(input("AQI數(shù)值:"))ifaqi<=50:level="優(yōu)"elifaqi<=100:level="良"elifaqi<=150:level="輕度污染"elifaqi<=200:level="中度污染"else:level="重度污染"air_quality.append([city,aqi,level])print(f"{city}的數(shù)據(jù)已添加!")案例實現(xiàn)STEP05查找空氣質(zhì)量最差的城市(選項3)歷所有城市數(shù)據(jù),找到最大的AQI值(max_aqi)。再次遍歷數(shù)據(jù),篩選出所有AQI值等于max_aqi的城市,打印這些城市的信息(支持多個城市并列最差)。whileTrue:原有代碼...elifchoice=="3":max_aqi=0forcity_datainair_quality:ifcity_data[1]>max_aqi:max_aqi=city_data[1]print("\n=====空氣質(zhì)量最差的城市=====")print(f"{'城市':<8}{'AQI':<8}{'空氣質(zhì)量等級'}")print("-"*28)forcity_datainair_quality:ifcity_data[1]==max_aqi:print(f"{city_data[0]:<8}{city_data[1]:<8}{city_data[2]}")案例實現(xiàn)STEP06按空氣質(zhì)量等級篩選(選項4)獲取用戶輸入的目標等級(level);遍歷air_quality列表,篩選出空氣質(zhì)量等級等于level的城市,并逐行打印符合條件的數(shù)據(jù))。whileTrue:原有代碼...elifchoice=="4":level=input("請輸入空氣質(zhì)量等級(優(yōu)/良/輕度污染/中度污染/重度污染):")print(f"\n=====空氣質(zhì)量等級為{level}的城市=====")print(f"{'城市':<8}{'AQI':<8}{'空氣質(zhì)量等級'}")print("-"*28)forcity_datainair_quality:ifcity_data[2]==level:print(f"{city_data[0]:<8}{city_data[1]:<8}{city_data[2]}")案例實現(xiàn)STEP07按AQI值排序(選項5)使用copy()方法創(chuàng)建air_quality的副本sorted_cities,避免修改原始數(shù)據(jù);通過雙重循環(huán)實現(xiàn)升序排序,打印排序后的城市列表。whileTrue:原有代碼...elifchoice=="5":sorted_cities=air_quality.copy()n=len(sorted_cities)foriinrange(n):forjinrange(0,n-i-1):ifsorted_cities[j][1]>sorted_cities[j+1][1]:temp=sorted_cities[j]sorted_cities[j]=sorted_cities[j+1]sorted_cities[j+1]=tempprint("\n=====按AQI值排序的城市列表=====")print(f"{'城市':<8}{'AQI':<8}{'空氣質(zhì)量等級'}")print("-"*28)forcity_datainsorted_cities:print(f"{city_data[0]:<8}{city_data[1]:<8}{city_data[2]}")案例實現(xiàn)STEP08退出系統(tǒng)(選項6)當用戶選擇6時,打印退出提示,并使用break跳出“whileTrue”循環(huán),結(jié)束程序。whileTrue:原有代碼...elifchoice=="6":print("感謝使用空氣質(zhì)量監(jiān)測系統(tǒng)!")break案例實現(xiàn)STEP09錯誤處理(無效選擇)若用戶輸入的choice不在1至6范圍內(nèi),提示“無效選擇,請重試!”,循環(huán)繼續(xù),等待用戶重新輸入。whileTrue:原有代碼...else:print("無效選擇,請重試!")【案例4-2】新能源汽車銷量分析02案例分析面對全球氣候變暖、能源危機與環(huán)境污染,“雙碳”目標推動綠色出行成為共識。新能源汽車憑借零/低排放、能源高效等優(yōu)勢,在政策扶持與資本助推下蓬勃發(fā)展。本案例采用元組存儲新能源汽車品牌銷量數(shù)據(jù),元組的不可變性保障數(shù)據(jù)安全穩(wěn)定,每個元組記錄品牌名稱、銷量、增長率等核心指標,實現(xiàn)數(shù)據(jù)高效整合與防篡改。知識儲備元組基本操作常用元組方法知識儲備知識儲備—元組基本操作1.創(chuàng)建元組元組使用小括號()創(chuàng)建并在其中放置元素,元素之間用逗號分隔。如果元組中只有一個元素,需要在元素后面加上逗號,否則Python會將其視為普通數(shù)據(jù)類型。語法格式如下:創(chuàng)建空元組:空元組名=()創(chuàng)建包含多個元素的元組:元組名=(元素1,元素2,...)創(chuàng)建只含一個元素的元組:元組名=(元素,)使用格式知識儲備—元組基本操作無縫銜接單元測試empty_tuple=() #創(chuàng)建空元組print("空元組:",empty_tuple)multiple_tuple=(1,2,'three') #創(chuàng)建包含多個元素的元組print("包含多個元素的元組:",multiple_tuple)single_tuple=(4,) #創(chuàng)建只含一個元素的元組print("只含一個元素的元組:",single_tuple)示例17使用小括號()創(chuàng)建不同元組。知識儲備—元組基本操作1.創(chuàng)建元組使用內(nèi)置函數(shù)tuple()也可以創(chuàng)建元組,當函數(shù)的參數(shù)列表為空時表示創(chuàng)建空元組,當參數(shù)列表為可迭代對象時表示創(chuàng)建非空元組?!臼纠?8】使用tuple()函數(shù)創(chuàng)建不同元組,示例代碼如下:empty_tuple=tuple() #創(chuàng)建空元組print("空元組:",empty_tuple)list_tuple=tuple([1,2,'three']) #利用列表創(chuàng)建元組(1,2,'three')print("利用列表創(chuàng)建元組:",list_tuple)str_tuple=tuple('python') #利用字符串創(chuàng)建元組('p','y','t','h','o','n')print("利用字符串創(chuàng)建元組:",str_tuple)range_tuple=tuple(range(5)) #利用可迭代對象創(chuàng)建元組(0,1,2,3,4)print("利用可迭代對象創(chuàng)建元組:",range_tuple)知識儲備—元組基本操作2.訪問元組Python中支持通過索引與切片的方式訪問元組的元素,也支持在循環(huán)中依次訪問元組的元素?!臼纠?9】使用不同方式訪問元組,示例代碼如下:my_tuple=('red','green','blue','yellow','purple')print("my_tuple元組的長度:",len(my_tuple))#索引操作print("索引為1的元素:",my_tuple[1])print("索引為-2的元素:",my_tuple[-2])#切片操作print("切片[1:3]的結(jié)果:",my_tuple[1:3])print("切片[::2]的結(jié)果:",my_tuple[::2])#遍歷元組fordatainmy_tuple:print(data,end='')知識儲備—元組基本操作3.合并元組合并元組是把兩個或多個元組的元素組合成一個新元組,使用+運算符來實現(xiàn),它會創(chuàng)建一個包含所有參與合并元組元素的新元組?!臼纠?0】使用運算符+號合并元組,示例代碼如下:tuple1=(1,2,3)tuple2=("a","b","c")merged_tuple=tuple1+tuple2print("合并后的元組:",merged_tuple)知識儲備—元組基本操作4.成員運算元祖的成員運算用于判斷某個元素是否存在于元組中,使用in和notin運算符。in判斷元素是否在元組內(nèi),notin判斷元素是否不在元組內(nèi),返回值為True或False?!臼纠?1】判斷20和40是否包含在列表my_tuple中,示例代碼如下:my_tuple=(10,20,30)print("20是否在元組中:",20inmy_tuple)print("40是否不在元組中:",40notinmy_tuple)知識儲備—常用元組方法1.count()方法count()方法用于統(tǒng)計元組中某個元素出現(xiàn)的次數(shù)。它會遍歷整個元組,檢查每個元素是否與指定的元素相匹配,若匹配則計數(shù)加一,最終返回該元素在元組中出現(xiàn)的總次數(shù)。語法格式如下:元組.count(元素)使用格式知識儲備—常用元組方法無縫銜接單元測試my_tuple=(1,2,2,3,2,4)count_result=my_tuple.count(2)print(f"元素2在元組中出現(xiàn)的次數(shù)為:{count_result}")示例22使用count()的方式統(tǒng)計元素次數(shù)。知識儲備—常用元組方法2.index()方法index()方法用于查找元組中某個元素第一次出現(xiàn)的索引位置。如果找到了指定元素,就返回該元素首次出現(xiàn)的索引;若元素不在元組中,會拋出ValueError異常。語法格式如下:元組名.index(元素[,起始索引[,結(jié)束索引]])使用格式知識儲備—常用元組方法無縫銜接單元測試my_tuple=('apple','banana','cherry','banana')try:index_result=my_tuple.index('banana')print(f"元素banana第一次出現(xiàn)的索引是:{index_result}")index_result_with_range=my_tuple.index('banana',2)print(f"從索引2開始查找,元素banana第一次出現(xiàn)的索引是:{index_result_with_range}")exceptValueError:print("未在元組中找到指定元素。")示例23查找元素“banana”第一次出現(xiàn)的索引。案例實現(xiàn)創(chuàng)建名稱為“新能源汽車銷量分析”的項目,在項目下創(chuàng)建名稱為sales_analysis的Python文件。準備工作案例實現(xiàn)STEP01初始化數(shù)據(jù)與基本展示初始化新能源汽車銷量數(shù)據(jù)元組,每個元組包含(品牌,季度銷量,同比增長率);顯示所有新能源汽車品牌的銷量數(shù)據(jù)。sales_data=(("比亞迪",250000,0.85),("特斯拉",180000,0.65),("理想",120000,0.72),("蔚來",80000,0.58),("小鵬",70000,0.62))#顯示排行榜print("=====新能源汽車季度銷量排行榜=====")print(f"{'品牌':<10}{'銷量':<10}{'同比增長率'}")print("-"*30)fordatainsales_data:print(f"{data[0]:<10}{data[1]:<10}{data[2]:.2%}")案例實現(xiàn)STEP02元組解包與數(shù)據(jù)查詢遍歷元組查找匹配項,在for循環(huán)未找到時提示相應(yīng)信息。原有代碼....search_brand=input("\n請輸入要查詢的品牌:")fordatainsales_data:brand,sales,growth=data#元組解包ifbrand==search_brand:print(f"\n{brand}銷量:{sales}輛,增長率:{growth:.2%}")breakelse:print(f"未找到{search_brand}的數(shù)據(jù)")案例實現(xiàn)STEP03數(shù)據(jù)排序當用戶選擇控制燈時,根據(jù)當前燈的狀態(tài)(開/關(guān))進行反轉(zhuǎn),并更新狀態(tài)變量,同時輸出操作結(jié)果。原有代碼...sorted_data=sorted(sales_data,key=lambdax:x[1],reverse=True)print("\n=====按銷量排序后的排行榜=====")forbrand,sales,growthinsorted_data:print(f"{brand:<10}{sales:<10}{growth:.2%}")案例實現(xiàn)STEP04數(shù)據(jù)統(tǒng)計與計算使用sum()函數(shù)和max()函數(shù)處理元組數(shù)據(jù),計算市場總銷量和平均增長率,找出增長率最高的品牌。原有代碼...#計算市場總銷量和平均增長率total_sales=sum(data[1]fordatainsales_data)average_growth=sum(data[2]fordatainsales_data)/len(sales_data)print(f"\n市場總銷量:{total_sales:,}輛")print(f"平均增長率:{average_growth:.2%}")#找出增長率最高的品牌max_growth_brand=max(sales_data,key=lambdax:x[2])[0]print(f"增長率最高的品牌:{max_growth_brand}")【案例4-3】商品庫存管理03案例分析電商行業(yè)快速發(fā)展,新興銷售模式不斷涌現(xiàn),海量商品涌入市場,庫存管理成為商家運營關(guān)鍵。庫存積壓或缺貨都會對經(jīng)營造成負面影響,精準管控庫存需求迫切。本案例使用Python字典實現(xiàn)商品庫存管理,支持實時查詢庫存,庫存低于閾值時自動提醒補貨;可靈活修改商品價格;還能統(tǒng)計庫存總價值、商品品類占比等,輔助商家決策。知識儲備字典基本操作常用字典方法知識儲備知識儲備—字典基本操作1.創(chuàng)建字典在Python中,字典的表現(xiàn)形式為一組包含在大括號“{}”中的鍵值對,每個鍵值對為一個字典元素。不同鍵值對之間使用逗號“,”分隔,鍵和值之間使用“:”分隔,語法格式如下:{鍵1:值1,鍵2:值2,...,鍵N:值N}語法格式字典的值可以是任意類型,鍵可以是任意不可變類型的對象,如字符串、元組等。字典像集合一樣使用“{}”包裹元素,字典中的元素?zé)o序,且鍵必須唯一。知識儲備—字典基本操作emptyDict1={} #使用{}創(chuàng)建空字典student={'name':'Alice','age':20,'gender':'female'} #使用{}創(chuàng)建非空字典print("直接定義的字典:",student)emptyDict2=dict() #使用dict()創(chuàng)建空字典person=dict(name='Bob',age=25,gender='male') #使用dict()函數(shù)創(chuàng)建非空字典print("使用dict()函數(shù)定義的字典:",person)data=dict([('city','NewYork'),('country','USA')]) #使用dict()函數(shù)傳入元組列表print("使用dict()函數(shù)傳入元組列表定義的字典:",data)示例24使用不同方式創(chuàng)建字典。知識儲備—字典基本操作2.訪問字典Python中可以使用字典的鍵訪問其對應(yīng)的值,具體的語法格式如下:my_dict={'name':'Bob','age':25}print("獲取鍵name的值:",my_dict['name'])print("獲取鍵age的值:",my_dict['age'])字典變量[鍵]語法格式【示例25】創(chuàng)建一個包含姓名和年齡兩個元素的字典,并通過鍵獲取值,示例代碼如下:知識儲備—字典基本操作2.訪問字典Python提供了內(nèi)置方法get(),該方法根據(jù)鍵從字典中獲取對應(yīng)的值,若指定的鍵不存在則返回指定的默認值。get()方法的語法格式如下:print("獲取鍵name的值:",my_dict.get('name'))print("獲取鍵age的值:",my_dict.get('age'))print("獲取鍵email的值(不存在,使用默認值):",my_dict.get('email','notfound'))d.get(key[,default])語法格式在上述語法格式中,key表示是要獲取值的鍵,default是可選的參數(shù),表示鍵不存在時返回的默認值。如果指定的鍵存在于字典中,則返回與該鍵關(guān)聯(lián)的值;如果鍵不存在,則返回指定的默認值;如果沒有指定默認值,則返回None。知識儲備—字典基本操作3.字典元素的添加和修改利用以下格式可以修改字典元素的值或新增一個元素:字典變量[鍵]=值語法格式知識儲備—字典基本操作my_dict={'name':'Bob','age':25}my_dict['name']='Alice' #通過鍵name修改其值為Alicemy_dict['age']=18 #通過鍵age修改其值為18my_dict['sex']='男' #添加性別元素,鍵為sex,值為男print(my_dict)示例26創(chuàng)建一個包含姓名和年齡兩個元素的字典,將姓名修改為Alice,年齡修改為18,并新增一個性別元素,性別的值為“男”,示例代碼如下:知識儲備—字典基本操作3.字典元素的添加和修改當字典中不存在某個鍵時,使用update()方法同樣可以實現(xiàn)元素的添加,update()方法不僅能給字典添加一個元素,還可以一次性給字典添加多個元素。update()方法的語法格式如下:以上語法格式中參數(shù)other是可選的,表示要添加的元素,它可以接收一個字典,例如{'b':3,'c':4},也可以接收一個由鍵值對元組組成的可迭代對象。update([other])語法格式知識儲備—字典基本操作my_dict={'name':'Bob','age':25}my_dict.update({'name':'Alice','age':18,'sex':'男'})print(my_dict)示例27使用update()方法實現(xiàn)前例相同的功能。知識儲備—字典基本操作4.成員運算字典的成員運算用于判斷某個鍵是否存在于字典中,使用in和notin運算符。in判斷鍵是否在字典內(nèi),notin判斷鍵是否不在字典內(nèi),返回值為True或False。語法格式如下元素in字典名元素notin字典名使用格式知識儲備—字典基本操作my_dict={'name':'Alice','age':20}print("鍵name是否在字典中:",'name'inmy_dict)print("鍵email是否不在字典中:",'email'notinmy_dict)示例28判斷name和email是否包含在列表my_dict中。知識儲備—常用字典方法1.keys()方法keys()方法返回一個包含字典中所有鍵的列表,語法格式如下:字典名.keys()語法格式my_dict={'name':'Bob','age':25,'city':'NewYork'}keys=my_dict.keys()print("字典的鍵:",keys)forkeyinkeys:print(key)【示例29】使用keys()方法獲取字典中所有的鍵并遍歷,示例代碼如下:知識儲備—常用字典方法2.values()方法values()方法返回一個包含字典中所有值的列表,語法格式如下:字典名.values()語法格式my_dict={'name':'Alice','age':20,'country':'USA'}values=my_dict.values()print("字典的值:",values)forvalueinvalues:print(value)【示例30】使用values()方法獲取字典中所有的鍵并遍歷,示例代碼如下:知識儲備—常用字典方法3.items()方法items()方法返回一個包含字典中所有鍵值對的列表,每個鍵值對以元組的形式呈現(xiàn),語法格式如下:字典名.items()語法格式my_dict={'name':'Charlie','age':30,'job':'Engineer'}items=my_dict.items()print("字典的鍵值對:",items)forkey,valueinitems:print(key,":",value)【示例31】使用itmes()方法獲取字典中的所有鍵值對并遍歷,示例代碼如下:知識儲備—常用字典方法4.pop()方法pop()方法根據(jù)指定鍵刪除字典中的元素,并返回對應(yīng)元素的值。如果鍵不存在,會拋出KeyError異常,可通過指定默認值來避免異常,語法格式如下:字典名.pop(鍵[,默認值])語法格式知識儲備—字典基本操作my_dict={'name':'Eve','age':22}#刪除鍵age并獲取對應(yīng)的值value=my_dict.pop('age')print("刪除的鍵對應(yīng)的值:",value)print("刪除后的字典:",my_dict)#嘗試刪除不存在的鍵,指定默認值default_value=my_dict.pop('email','notfound')print("嘗試刪除不存在的鍵,返回的默認值:",default_value)示例32使用pop()方法刪除字典my_dict中指定鍵的元素。知識儲備—常用字典方法5.popitem()方法pop()方法根據(jù)指定鍵刪除字典中的元素,并返回對應(yīng)元素的值。如果鍵不存在,會拋出KeyError異常,可通過指定默認值來避免異常,語法格式如下:字典名.popitem()語法格式my_dict={'name':'Frank','age':35,'hobby':'Reading'}item=my_dict.popitem()print("刪除的元素:",item)print("刪除后的字典:",my_dict)【示例33】使用popitem()方法隨機刪除字典my_dict中的元素,示例代碼如下:知識儲備—常用字典方法6.clear()方法clear()方法用于清空字典中的元素,使字典變?yōu)榭兆值洌Z法格式如下:字典名.clear()語法格式my_dict={'name':'Grace','age':27}my_dict.clear()print("清空后的字典:",my_dict)【示例34】使用clear()方法清空字典my_dict中的元素,示例代碼如下:案例實現(xiàn)創(chuàng)建名稱為“商品庫存管理”的項目,在項目下創(chuàng)建名稱為inventory_management的Python文件。準備工作案例實現(xiàn)STEP01初始化與顯示庫存初始化商品庫存字典,鍵為商品名稱,值為包含庫存數(shù)量和單價的列表。product_stock={"T恤":[50,39.9],"牛仔褲":[30,99.9],"運動鞋":[20,199.9]}print("=====商品庫存清單=====")forproduct,infoinproduct_stock.items():stock,price=infoprint(f"{product}|庫存:{stock}件|單價:{price}元")案例實現(xiàn)STEP02添加新商品通過input()函數(shù)接收新商品信息,并將商品信息添加到product_stock字典中。原有代碼....new_product=input("\n請輸入要添加的商品名稱:")new_stock=int(input("請輸入庫存數(shù)量:"))new_price=float(input("請輸入商品單價:"))product_stock[new_product]=[new_stock,new_price]print(f"√{new_product}已添加到庫存清單!")#顯示更新后的庫存print("\n=====更新后的庫存清單=====")forproduct,infoinproduct_stock.items():stock,price=infoprint(f"{product}|庫存:{stock}件|單價:{price}元")案例實現(xiàn)STEP03更新商品信息通過input()函數(shù)接收需要更新信息的商品的名稱,并輸入新的庫存數(shù)量和商品單價,通過修改字典元素的方法,更新保存在product_stock字典中商品信息。原有代碼...update_product=input("\n請輸入要更新的商品名稱:")ifupdate_productinproduct_stock:new_stock=int(input("請輸入新的庫存數(shù)量:"))new_price=float(input("請輸入新的商品單價:"))product_stock[update_product]=[new_stock,new_price]print(f"{update_product}的庫存和價格已更新!")else:print(f"未找到{update_product}的庫存信息!")#顯示指定商品信息print(f"\n{update_product}的當前信息:")ifupdate_productinproduct_stock:stock,price=product_stock[update_product]print(f"庫存:{stock}件|單價:{price}元")案例實現(xiàn)STEP04查詢特定商品信息通過商品名稱查詢特定商品信息,同時進行條件判斷與錯誤處理。原有代碼...search_product=input("\n請輸入要查詢的商品名稱:")ifsearch_productinproduct_stock:stock,price=product_stock[search_product]print(f"{search_product}|庫存:{stock}件|單價:{price}元")else:print(f"未找到{search_product}的庫存信息!")案例實現(xiàn)STEP05計算庫存總價值用四則運算計算庫存總價值,并格式化輸出保留結(jié)果小數(shù)點后兩位。原有代碼...total_value=0forproduct,infoinproduct_stock.items():stock,price=infototal_value+=stock*priceprint(f"\n庫存商品總價值:{total_value:.2f}元")【案例4-4】“戲曲研習(xí)社”活動管理04案例分析本案例模擬“戲曲研習(xí)社”活動管理,綜合運用列表、元組、字典及集合等多種符合數(shù)據(jù)類型,實現(xiàn)了復(fù)雜的活動管理功能。列表的有序性便于按順序管理成員名單;元組的不可變性確保固定活動類型穩(wěn)定存儲,避免隨意篡改;字典以鍵值對形式記錄成員詳細信息與報名情況,實現(xiàn)快速查詢與修改;利用集合無序且不重復(fù)的特性,高效完成成員名單去重、活動參與人員關(guān)系分析等操作。知識儲備集合基本操作常用集合方法知識儲備知識儲備—集合基本操作1.創(chuàng)建集合集合可以通過大括號{}或set()函數(shù)來創(chuàng)建,但是創(chuàng)建一個空集合必須用set()而不是{},因為{}是用來創(chuàng)建一個空字典。語法格式如下:使用花括號創(chuàng)建:{}使用set()函數(shù)創(chuàng)建:set1={元素1,元素2….}語法格式知識儲備—集合基本操作set1=set() #創(chuàng)建空集合print(set1)set2={1,2,3,4,5} #使用花括號創(chuàng)建集合print(set2)set3=set([3,4,5,6,7]) #使用set()函數(shù)創(chuàng)建集合print(set3)示例35使用不同方式創(chuàng)建集合。知識儲備—集合基本操作2.遍歷集合由于集合是無序的,因此不能像列表或元組那樣通過索引來直接訪問集合中的特定元素,也不能切片。但是,可以通過遍歷集合中的所有元素來間接地訪問它們?!臼纠?6】使用for循環(huán)遍歷集合中的元素,示例代碼如下:fruits={"apple","banana","cherry"}forfruitinfruits:print(fruit)知識儲備—集合基本操作3.集合的運算(1)交集運算當兩個集合A和B有共同元素時,這些共同元素所組成的集合被稱為集合A與集合B的交集。交集是同時屬于兩個集合的元素所組成的集合,如圖所示。在Python中,交集運算通過使用“&”運算符來實現(xiàn),語法格式如下:集合A&集合B語法A&B(交集)知識儲備—集合基本操作set1={1,2,3,4}set2={3,4,5,6}intersect_set1=set1&set2print("使用&運算符得到的交集:",intersect_set1)示例37使用“&”運算符求交集。知識儲備—集合基本操作3.集合的運算(1)并集運算將兩個集合A和B的所有元素匯總,所形成的全新集合被定義為集合A與集合B的并集。并集是合并兩個集合所有元素形成的新集合,重復(fù)元素只保留一個,如圖4-6所示。在Python中,并集運算通過“|”運算符來實現(xiàn),語法格式如下:集合A|集合B語法A|B(并集)知識儲備—集合基本操作set1={1,2,3}set2={3,4,5}union_set1=set1|set2print("使用|運算符得到的并集:",union_set1)示例38使用“|”運算符求并集。知識儲備—集合基本操作3.集合的運算(1)差集運算若存在兩個集合A與B,那么由所有既屬于A又不屬于B的元素所組成的集合,被稱作集合A與集合B的差集。差集是由屬一個集合但不屬于另一個集合的元素組成,如圖4-7所示。在Python中,差集運算通過“-”運算符來實現(xiàn),語法格式如下:集合A-集合B語法A-B(差集)知識儲備—集合基本操作set1={1,2,3,4}set2={3,4,5,6}diff_set1=set1-set2print("使用-運算符得到的差集:",diff_set1)示例39使用“-”運算符求差集。知識儲備—集合基本操作3.集合的運算(1)對稱差集運算對稱差集,又稱對稱差分或補集,涉及兩個集合A與B。對稱差集是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年土木工程勘察的區(qū)域性分析
- 2026年電氣控制系統(tǒng)的網(wǎng)絡(luò)通信技術(shù)
- 2026春招:新媒體運營真題及答案
- 賀年卡課件教學(xué)課件
- 貸款政策講解課件
- 貨運企業(yè)組織安全培訓(xùn)方案課件
- 兒科常見病遠程診療平臺
- 醫(yī)療服務(wù)流程優(yōu)化:提高效率
- 心肺復(fù)蘇護理操作標準化
- ??谱o理技術(shù)規(guī)范與操作講解
- 2026年菏澤學(xué)院單招職業(yè)傾向性考試題庫附答案解析
- 實際問題與一次函數(shù)課件2025-2026學(xué)年人教版八年級數(shù)學(xué)下冊
- 2025年天津科技大學(xué)毛澤東思想和中國特色社會主義理論體系概論期末考試模擬題及答案1套
- 南方航空安全員培訓(xùn)
- 2025-2026學(xué)年嶺南美版(新教材)初中美術(shù)七年級上冊期末綜合測試卷及答案
- DB11∕T 2398-2025 水利工程巡視檢查作業(yè)規(guī)范
- 期末復(fù)習(xí)主題班會
- 道路交通基礎(chǔ)設(shè)施韌性提升
- 鋼結(jié)構(gòu)噴砂防腐施工方案
- 涪江上游水資源水環(huán)境調(diào)查評價
- 重慶市地圖ppt模板
評論
0/150
提交評論