河南师范大学python+学习笔记6 组合数据类型
吃水不忘挖井人
首先對(duì)河南師范大學(xué)的各位老師們說聲謝謝。他們是:
張磊老師、張倩倩老師、劉金金老師、郭凌云老師、李曉艷老師、李志先老師、陶華亭老師、周雪燕老師、王愛菊老師、陳勁松老師、黃曉巧老師、夏輝麗老師
第六章 組合數(shù)據(jù)類型
基本數(shù)據(jù)類型,包括數(shù)值類型、字符串類型、布爾類型等,這些類型能表示一個(gè)數(shù)據(jù), 這種表示單一數(shù)據(jù)的類型稱為基本數(shù)據(jù)類型。
實(shí)際在計(jì)算中,計(jì)算機(jī)不僅能處理單個(gè)變量表示的數(shù)據(jù), 更多情況下,計(jì)算機(jī)需要對(duì)一組數(shù)據(jù)進(jìn)行批量處理,這就需要能表示多個(gè)數(shù)據(jù)的組合數(shù)據(jù)類型。
Python語言中常用的組合數(shù)據(jù)類型有4種:
? 列表類型 ? 元組類型 ? 字典類型 ? 集合類型
6.1 列表類型
6.1.1列表的定義
? 列表是最常用的python數(shù)據(jù)類型,列表中的元素之間存在先后關(guān)系,
通過序號(hào)訪問,列表元素類型可以不同,列 表可以包含列表,列表沒有長度限制。
? 創(chuàng)建列表可以使用中括號(hào)[ ]和list( )函數(shù)。
? 列表的數(shù)據(jù)項(xiàng)不需要具有相同的類型
>>> s = [3.5,”ABC”,(4,5),[“紅”,”綠”,”藍(lán)”],3.5] >>> t =[[1,2,3,4,5],[5,6,7,8,9]]#列表可以嵌套列表 >>> s =list() #用list()創(chuàng)建空列表 >>> t =[] #用[]創(chuàng)建空列表list( )將其他類型轉(zhuǎn)變成列表類型。
>>> list(“python”) #把字符轉(zhuǎn)轉(zhuǎn)換為列表 ['p', 'y', 't', 'h', 'o', 'n']6.1.2列表的索引和切片
索引是列表的基本操作,用于獲得列表的元素。
列表索引可以用正向遞增序號(hào)和反向遞減序號(hào)。
可以使用for循環(huán)對(duì)列表進(jìn)行遍歷操作,基本使用方式如下:
for <循環(huán)變量> in <列表變量>:<語句塊>for循環(huán)遍歷列表,循環(huán)變量依次獲得列表中的元素,
對(duì)每個(gè)列表元素執(zhí)行一次語句塊操作。
切片是列表的基本操作,用于獲得列表的一個(gè)片段,
切片有兩種方式:
? 列表或列表變量[N: M] 獲取列表類型從N到M(不包 含M)的元素
? 列表或列表變量[N: M: K] 獲取列表類型從N到M(不 包含M)以K為步長所對(duì)應(yīng)元素
6.1.3列表的操作
列表操作符和函數(shù)
in、not in 判斷元素是否在列表中
min( )、 max( )、 列表的最小元素、最大元素
len( ) 、sum( ) 列表元素個(gè)數(shù)、列表求和
s + t 連接列表s和t
s * n 或 n * s 將列表s復(fù)制n次
判斷元素是否在列表中:in、not in
>>> T=[1,2,2,4,5] >>> 1 in T True >>> 1 not in T False列表的最大值、最小值、長度、求和
? max( )、min( )、len( )、sum( ) 。
>>> T=[1,2,2,4,5]
>>> max(T)
5
>>> min(T)
1
>>> len(T)
5
>>> sum(T)
14
列表連接符 + 、列表復(fù)制符 *
>>> S =[3, "ABC", 7.9] >>> T=[1,2,2,4,5] >>> S+T [3, 'ABC', 7.9, 1, 2, 2, 4, 5] >>> S*2 [3, 'ABC', 7.9, 3, 'ABC', 7.9]除了前面介紹的列表操作符和函數(shù)外,列表還提供 了一些操作方法,
列表類型操作方法的語法形式是:
向列表添加元素,有s.append( )、s.insert( )、s.extend( )
? s.append( ) 是在列表最后增加一個(gè)元素。
? s.insert(i, x)在列表中序號(hào)i位置上插入元素x。
>>> s=["A","B","C"] >>> s.insert(1,10) >>> s ['A', 10, 'B', 'C']? s.extend( )方法是向列表末尾添加一個(gè)列表。
>>> s=["A","B","C"] >>> t=[1,2,3] >>> s.extend(t) # 等價(jià)于 s+t >>> s ['A', 'B', 'C', 1, 2, 3]? 從列表中刪除元素有s.remove( )、s.pop( )、del、s.clear( )
? s.pop( )方法將按照指定的位置序號(hào)返回元素,并刪除元素。
? s.remove( )方法按照指定的元素值刪除第一次出現(xiàn)的該元素。
? 使用Python保留字del根據(jù)索引位置刪除列表元素或切片片段。
>>> s=[0,1,2,3,4,5,6] >>> del s[2] >>> del s[1:3] >>> del s[0:7:2]? s.clear()方法將刪除列表的所有元素,清空列表。
>>> s=["A","B","C"] >>> s.clear() >>> s []? 除上述方法外,可以使用索引和切片配合“=”修改列表 元素或片段。
>>> s=["A","B","C"] >>> s[1]=2 #使用索引序號(hào)修改元素值 >>> s[1:3]=[4,5] #使用切片修改列表片段 >>> s[1:3]=[4,5,6,7] #切片和修改內(nèi)容長度可以不一致, ”多增少減”即可。? s.copy( )方法是復(fù)制列表中所有元素生成一個(gè)新列表。修改原 列表元素不影響新生成的列表。
? 列表的賦值s= t語句,并不是把t的元素拷貝給s,而是把s和t 所指向同一套內(nèi)容。t清除元素時(shí),s也會(huì)清空。
? s.reverse( )方法將列表s中元素逆序。
>>> s=["A","B","C"] >>> s.reverse() >>> s ['C', 'B', 'A']?s.sort( ) 將列表s中的元素排序,默認(rèn)升序。
>>> s=[1,3,6,4,2] >>> s.sort() >>> s [1, 2, 3, 4, 6] >>> s.sort(reverse=True) >>> s [6, 4, 3, 2, 1]? s.index( )返回列表s中第一次出現(xiàn)某個(gè)元素的位置
? s.count( )返回某元素在列表s中出現(xiàn)的次數(shù)
?小結(jié):
本節(jié)主要講解了列表類型的定義、索引和切片以及 列表的操作。
列表是一個(gè)十分靈活的數(shù)據(jù)結(jié)構(gòu),它具有 處理任意長度、混合類型的能力,并提供了豐富的操作符和方法。
程序需要使用組合數(shù)據(jù)類型管理批量數(shù)據(jù)時(shí) ,應(yīng)盡量使用列表類型。
6.2 元組類型
6.2.1元組的定義
? 元組與列表類似,不同之處在于元組一旦創(chuàng)建不能修改,可以看做是只讀的列表。
?元組的元素之間有序,元組的元素類型可以不同,元組可以 包含元組,元組不可改變。
? 創(chuàng)建元組使用()或 tuple( )函數(shù)
>>> t = (?A?, ?B?, ?C?, ?D?) #用()創(chuàng)建元組 >>> d=((1,2,3,4,5),(6,7,8,9,10))#元組中嵌套元組 >>> e=tuple(range(5,11)) #把序列轉(zhuǎn)換為元組 >>> m=tuple(“python”) #把字符串轉(zhuǎn)換為元組6.2.2元組的操作
? 可以使用索引和切片訪問元組元素
>>> t=tuple(range(10)) >>> t[3] >>> t[1:3] >>> t[1:9:2] ? 用del語句刪除整個(gè)元組 ? >>> del t6.2.2元組的操作
? 元組元素不能增加、刪除、修改或排序,
但是可使用與列 表類似的方法獲得元組的信息。
? sum( )、max()、min()、len( )
? in 、not in ? t.index( )獲得元素的序號(hào)
? t.count()計(jì)算元素出現(xiàn)的次數(shù)
這里不再重述,同學(xué)們可參照列表的方法學(xué)習(xí)
?小結(jié):
本節(jié)主要介紹了元組的定義和元組的操作,元組與列表類 似,元組的一些操作可參照列表學(xué)習(xí),
元組與列表的區(qū)別是元 組創(chuàng)建后不能改變,可當(dāng)做只讀的列表使用。
6.3 字典類型
6.3.1字典的定義
? 字典的元素是一組“鍵值對(duì)”,字典的鍵值對(duì)之間無序且 不能重復(fù)。
? 字典的鍵必須唯一,必須是不可變類型,如字符串,整數(shù)、 實(shí)數(shù)、或元組。值可以取任何數(shù)據(jù)類型,值可以重復(fù). 6.3.1字典的定義
? 創(chuàng)建字典使用大括號(hào){ }或dict(…) ,每個(gè)元素是一個(gè)鍵值對(duì), 鍵和值通過冒號(hào)連接,不同鍵值對(duì)用逗號(hào)間隔。
創(chuàng)建包含姓名和電話的字典。
可以先創(chuàng)建空字典,逐漸在字典中增加元素 ? 創(chuàng)建空字典
>>> d = { } >>> s= dict() >>>print(d) { }6.3.2 字典的索引
? 列表類型采用元素的位置序號(hào)索引,字典直接利用鍵索引。 字典索引方式: <值> = <字典變量>[<鍵>] 6.3.2 字典的索引
>>> d={'A':1,'B':3,'C':5,'D':9} >>> d['A'] 1? 利用鍵索引和賦值(=),可以修改或增加字典元素
>>> d={'A':1,'B':3,'C':5,'D':9} >>> d[‘M’]=2 #把鍵為’M’的元素值改為2,若字典中不存 在則增加此元素 >>> d {'A': 1, 'B': 3, 'C': 5, 'D': 9, 'M': 2}6.3.3 字典的操作函數(shù)
字典類型常用的操作方法,使用語法形式是:
<字典變量>.<方法名稱>(<方法參數(shù)>)
? d.keys( )方法返回字典d中的所有鍵信息,返回結(jié)果是 Python的一種內(nèi)部數(shù)據(jù)類型dict_keys;
? d.values( )方法返回字典d中的所有值信息,返回結(jié)果是 Python的一種內(nèi)部數(shù)據(jù)類型dict_values。
? 可以用list()函數(shù)把將字典的鍵或值轉(zhuǎn)換為列表,
? 或使用tuple()把字典的鍵或值轉(zhuǎn)換為元組。
? d.items( )方法返回字典d中的所有鍵值對(duì)信息,
返回結(jié)果是 Python的一種內(nèi)部數(shù)據(jù)類型dict_items。用 list( )函數(shù)將字典 轉(zhuǎn)換為列表類型。
? d.get(key, default)方法根據(jù)鍵信息查找并返回值信息,
如果 key存在則返回相應(yīng)值,否則返回默認(rèn)值,第二個(gè)元素default 可以省略,如果省略則默認(rèn)值為空。
? d.pop(key, default)方法根據(jù)鍵查找并取出值,與get()方法類似,
不同的是pop( )在取出相應(yīng)值后,將從字典中刪除對(duì)應(yīng)的鍵值對(duì)。
? d.popitem( )隨機(jī)從字典中取出一個(gè)鍵值對(duì),以元組(key, value) 形式返回。取出后從字典中刪除這個(gè)鍵值對(duì)。
>>> d={'A':1,'B':3,'C':5,'D':9} >>> d.popitem() ('D', 9) >>> d {'A': 1, 'B': 3, 'C': 5}? 使用保留字del可以刪除字典中某一個(gè)元素
? d.clear( )方法可以刪除字典中所有鍵值對(duì)。
? len( )返回字典的元素個(gè)數(shù),也稱為長度。
? 字典可以用for循環(huán)對(duì)其元素進(jìn)行遍歷,基本語法結(jié)構(gòu)如下:
for <變量名> in <字典名>
<語句塊>
? for循環(huán)返回的變量名是字典的鍵。如果需要獲得鍵對(duì)應(yīng)的值,可以在語句塊中通過get()方法獲得。
?小結(jié):
? 本節(jié)主要講解字典的定義、索引和字典的操作。
字典是非常重要的數(shù)據(jù)類型,請同學(xué)們多加練習(xí)。
6.4 集合類型
6.4.1 集合的定義
? 集合是包含0個(gè)或多個(gè)不重復(fù)數(shù)據(jù)項(xiàng)的無序組合。
? 集合中元素不可重復(fù),當(dāng)需要對(duì)一維數(shù)據(jù)進(jìn)行去重或進(jìn)行數(shù) 據(jù)重復(fù)處理時(shí),一般通過集合來完成。
? 創(chuàng)建集合可以使用大括號(hào){ }或者 set( )函數(shù),set( )函數(shù)用來 創(chuàng)建空集合或?qū)⑵渌臄?shù)據(jù)類型變成集合類型。
6.4.2 集合的操作
?集合類型常用的操作符: 交、差、并、補(bǔ)
>>>S = {3, “ABC", 7.9} >>>T = {5, "ABC", 12.3}? 集合類型常用的操作函數(shù)或方法
S = {3, “ABC”, 7.9} #創(chuàng)建集合 >>> S.add(5) # 在集合中增加元素5 >>> S.remove(5) #刪除元素5 >>> S.clear() #清除集合的所有元素?小結(jié):
? 本節(jié)主要講解集合的定義和操作。
集合的特點(diǎn)是元素?zé)o序 不重復(fù),集合常用來輔助去除重復(fù)元素。
6.5 實(shí)例解析
? 教務(wù)管理系統(tǒng)中有很多學(xué)生的信息,其中包括學(xué)生的課程和不 同課程的成績,我們經(jīng)常需要一些學(xué)生課程戒成績統(tǒng)計(jì)信息。
? 學(xué)生的成績表如圖所示。
在本實(shí)例中我們將介紹輸入學(xué)生的課程和成績,并把學(xué)生的成 績表按照某一科目成績排序。
IPO流程是:
? 第一步:輸入學(xué)生的課程和成績
? 第二走:根據(jù)輸入的排序要求(排序依據(jù)和排序順序)排序
? 第三步:輸出排序后的成績單
?第一步:輸入學(xué)生的課程和成績
? 輸入學(xué)生的課程信息保存到列表
? 輸入學(xué)生的成績信息保存到列表
? 第二步:根據(jù)輸入的排序要求(排序依據(jù)和排序順序)排序
? 排序依據(jù)和排序順序通過鍵盤輸入獲得 ?
排序依據(jù)為課程名稱
? 排序順序?yàn)樯蚪浣敌?br /> ? 第三步:輸出排序后的成績單
? 輸出課程信息和排序后的成績單
def OUTput(num1,num2): # 輸出顯示學(xué)生課程和成績
print()
print(“按照要求排序后的成績:”)
for cour in range(len(course)):
print("{:<10}\t".format(course[cour]),end="")
print()
for student in range(num1):
for cour in range(num2+1):
print("{:<10}\t".format(stu[student][cour]),end="")
print()
輸入學(xué)生信息并按照python成績降序排序后的成績單。
從結(jié) 果中你還能發(fā)現(xiàn)什么?想要計(jì)算其他的統(tǒng)計(jì)信息該如何改迚程序 呢?
請感興趣的同學(xué)逐步完善程序。
總結(jié)
以上是生活随笔為你收集整理的河南师范大学python+学习笔记6 组合数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WIN7 64 安装串口驱动和mini2
- 下一篇: win10和ubuntu16.04双系统