楊菲菲


摘要:Python功能強(qiáng)大,應(yīng)用到各行各業(yè),在很多計(jì)算機(jī)相關(guān)專業(yè)都開設(shè)此課程。文中簡(jiǎn)要介紹了Python語(yǔ)言的內(nèi)置數(shù)據(jù)結(jié)構(gòu),使用分類、對(duì)比教學(xué)方法詳細(xì)分析了內(nèi)置數(shù)據(jù)結(jié)構(gòu)的操作,希望對(duì)Python語(yǔ)言的教學(xué)有幫助。
關(guān)鍵詞:Python;內(nèi)置數(shù)據(jù)結(jié)構(gòu);分類;對(duì)比教學(xué)方法
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)30-0130-03
1重要性
Python語(yǔ)言是一門跨平臺(tái)、開源、免費(fèi)的解釋型高級(jí)動(dòng)態(tài)編程語(yǔ)言,在八十年代末和九十年代初設(shè)計(jì)出來(lái)后,經(jīng)過(guò)了快速的發(fā)展,到目前為止,在多個(gè)語(yǔ)言排行榜中位居前三,功能超級(jí)強(qiáng)大,應(yīng)用到各行各業(yè)。目前在高校計(jì)算機(jī)相關(guān)專業(yè)的人才培養(yǎng)中,Java語(yǔ)言、c語(yǔ)言、Python語(yǔ)言一般都會(huì)開設(shè)。在教學(xué)中發(fā)現(xiàn),相對(duì)于java語(yǔ)言、c語(yǔ)言,Python語(yǔ)言有自己的特點(diǎn),特別是在內(nèi)置數(shù)據(jù)結(jié)構(gòu)這方面,相對(duì)于其他兩門語(yǔ)言比較復(fù)雜,同時(shí)這些數(shù)據(jù)結(jié)構(gòu)是python語(yǔ)言的特色,也是其能夠靈活應(yīng)用在各個(gè)行業(yè)領(lǐng)域的重要原因,要掌握python語(yǔ)言,必須首先要把熟練使用這些內(nèi)置數(shù)據(jù)結(jié)構(gòu)。同時(shí),由于在很多高校python課程屬于比較新的課程,針對(duì)此課程的教學(xué)研究也比較少。
2python的內(nèi)置數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)是可以處理一些數(shù)據(jù)的結(jié)構(gòu),或者是用來(lái)存儲(chǔ)一組相關(guān)數(shù)據(jù)的。Python中的內(nèi)置數(shù)據(jù)結(jié)構(gòu)有列表、元組、字典、集合,熟練掌握它們的用法可以更加快速的解決實(shí)際問(wèn)題。
2.1列表(1ist)
列表由一系列按特定順序排列的元素組成,與C語(yǔ)言中的數(shù)組不同的是,列表可以自動(dòng)進(jìn)行內(nèi)存擴(kuò)展或收縮,保證元素之間沒(méi)有縫隙。
列表中的元素可以各不相同,可以存儲(chǔ)整數(shù)、實(shí)數(shù)、字符串等基本類型,也可以是列表、元組、字典、集合以及其他自定義類型的對(duì)象,并且列表中數(shù)據(jù)保存的是數(shù)據(jù)的指針。
在形式上,列表的所有元素都放在一對(duì)口中,元素之間用逗號(hào)進(jìn)行間隔。
列表的元素可以進(jìn)行增刪改查,也可以按照索引對(duì)其進(jìn)行訪問(wèn)。
2.2元組(tupIe)
元組與列表類似,也是保存的數(shù)據(jù)的指針,不同的是元組在內(nèi)存中申請(qǐng)的是固定地址,不可變更,不能修改和刪除元組中的某個(gè)元素,只能創(chuàng)建和刪除整個(gè)元組。
元組里可以存放的元素的數(shù)據(jù)類型同列表一樣,值得注意的是,當(dāng)元素是類似列表這種可變序列時(shí),情況就不一樣了,元組里面的列表是可以對(duì)列表進(jìn)行修改、增加、刪除操作的。
在形式上,元組的所有元素放在一對(duì)()里面,元素之間用逗號(hào)進(jìn)行間隔。
元組可以通過(guò)索引進(jìn)行訪問(wèn),不能進(jìn)行元素的修改、添加、刪除,可以對(duì)整個(gè)元組進(jìn)行刪除操作。
2.3字典(dictionary)
字典是一系列的鍵值對(duì),類似于java中的map。字典中的每個(gè)元素包含鍵和值兩部分,表示一種映射或?qū)?yīng)關(guān)系,鍵值對(duì)是沒(méi)有順序的。
在形式上,每個(gè)元素的鍵和值用冒號(hào)分隔,不同元素之間用逗號(hào)分隔,所有元素放在一對(duì)大括號(hào){}中。
字典中的鍵可以是python中任意不可變數(shù)據(jù),如整數(shù)、實(shí)數(shù)、復(fù)數(shù)、字符串、元組等,不能使用列表、集合、字典或其他可變類型作為字典的鍵。
字典的鍵不允許重復(fù),值是可以重復(fù)的。
2.4集合(set)
集合是沒(méi)有順序的簡(jiǎn)單對(duì)象的聚集嘲。集合更接近數(shù)學(xué)上集合的概念。集合中每個(gè)元素都是無(wú)序的、不重復(fù)的任意對(duì)象。
集合中只能是包含數(shù)字、字符串、元組等不可變類型的數(shù)據(jù),而不能包含列表、字典、集合等可變類型的數(shù)據(jù),相當(dāng)于字典中的鍵。
在形式上,集合中所有的元素放在一對(duì)大括號(hào){}中,元素之間用逗號(hào)分隔。
對(duì)集合可以進(jìn)行增加刪除元素,也可以進(jìn)行求兩個(gè)集合的交集、并集、差集等運(yùn)算。
3內(nèi)置數(shù)據(jù)結(jié)構(gòu)的教學(xué)
Python中的數(shù)據(jù)結(jié)構(gòu)比較多而且比較復(fù)雜,對(duì)于這四種內(nèi)置的數(shù)據(jù)結(jié)構(gòu)可以采用分類教學(xué)法、比較教學(xué)法。將其按照有序、無(wú)序和可變、不可變以及元素是否重復(fù)進(jìn)行劃分,介紹它們的使用方法。
3.1有序、無(wú)序
有序無(wú)序的序指的是元素可以在整個(gè)序列中是否有序,針對(duì)其使用,就是是否可以通過(guò)索引的方式來(lái)方位訪問(wèn)元素。
在這四種數(shù)據(jù)結(jié)構(gòu)中,列表、元組都是有序,字典和集合是無(wú)序。有序的數(shù)據(jù)結(jié)構(gòu)在對(duì)元素進(jìn)行操作時(shí)要掌握索引和切片兩個(gè)概念。
(1)雙向索引。索引不陌生,在c語(yǔ)言和java語(yǔ)言的數(shù)組都出現(xiàn)過(guò),python中的索引有所不同,支持雙向索引,第一個(gè)元素下標(biāo)為0,第二個(gè)元素為1,如果使用負(fù)索引,則最后一個(gè)元素下標(biāo)為一1,倒數(shù)第二個(gè)元素下標(biāo)為一2,以此類推。
(2)切片。切片也是python新增加的特色。切片適用于列表、元組、字符串等類型,應(yīng)用于列表具有最為強(qiáng)大的功能。可以使用切片來(lái)截取列表中的任何部分元素,也可以通過(guò)切片來(lái)修改和刪除列表中的部分元素。切片有三個(gè)重要參數(shù):開始位置,截止位置,切片的步長(zhǎng)。
3.2可變、不可變
可變、不可變指的是序列中的元素是不是可以增加、刪除、修改操作。在這四種數(shù)據(jù)結(jié)構(gòu)中,列表、字典、集合是可變的,元組是不可變的。
(1)增加元素
列表增加元素可以使用append方法尾部追加一個(gè)元素,使用insert方法向列表任意指定位置插入一個(gè)元素,使用extend方法將另一個(gè)列表中的所有元素追加至當(dāng)前列表的尾部。這三種方法的共同點(diǎn)是在原地操作,不影響列表對(duì)象在內(nèi)存中的起始位置。不同地方是它們的執(zhí)行效率不同,insert方法如果在中間位置進(jìn)行插入,效率比較低下,因?yàn)樵撐恢煤蟮乃性囟家苿?dòng),操作時(shí)要盡量避免在列表中間位置進(jìn)行插入操作。
字典和集合都是無(wú)序的,所以在增加元素時(shí)不會(huì)考慮到位置問(wèn)題。字典增加元素時(shí),比較簡(jiǎn)單的方法是字典名[鍵名]=值名即可,update方法也可以。集合使用add方法增加元素,如果集合中已有,則忽略掉,也可以使用update方法合并另外一個(gè)集合中的元素到當(dāng)前集合中。
(2)刪除元素
列表刪除元素可以使用pop方法刪除最后一個(gè)元素,也可以通過(guò)索引的方式刪除指定位置的元素,remove方法用來(lái)刪除列表中第一個(gè)與指定值相等的元素,只是刪除第一個(gè),clear方法用于清空列表,也可以使用del命令來(lái)刪除列表的指定元素和列表。如果刪除后還希望使用元素,使用pop方法。
字典刪除元素可以使用pop方法和popitem方法彈出并刪除指定的元素,clear方法可以清空字典里面所有的元素,也可以使用del命令來(lái)刪除字典中指定鍵值對(duì)和刪除整個(gè)字典。
集合刪除元素可以使用pop方法用于隨機(jī)刪除并返回集合中的一個(gè)元素,如果集合為空則拋出異常,remove方法用于刪除集合中的指定元素,如果不存在則拋出異常,discard方法從集合中刪除指定元素,所不同的是,如果元素不存在則忽略該操作,clear方法清空集合刪除所有元素。使用del命令刪除整個(gè)集合,但是不能用del命令刪除集合中的指定元素。
(3)修改元素
修改元素對(duì)于可變序列來(lái)講,可以直接使用索引找到指定元素進(jìn)行修改。對(duì)于字典修改元素時(shí)可以使用update方法來(lái)進(jìn)行修改,同時(shí)如果字典中沒(méi)有該鍵值對(duì)還可以添加的功能。
集合不涉及到修改元素。
3.3總結(jié)
使用分類教學(xué)法、對(duì)比教學(xué)法對(duì)四種內(nèi)置數(shù)據(jù)結(jié)構(gòu)的操作進(jìn)行總結(jié)歸類如下表所示:
對(duì)于不可變序列,不涉及到增加、刪除、修改操作,對(duì)于可變序列中,對(duì)比之后發(fā)現(xiàn),列表提供的方法比較多,刪除元素都可以使用pop方法彈出元素使用,都可以使用clear方法清空序列,都可以使用del命令刪除序列。
4結(jié)束語(yǔ)
Python的使用非常廣泛。通過(guò)簡(jiǎn)要介紹Python語(yǔ)言的內(nèi)置數(shù)據(jù)結(jié)構(gòu),使用分類、對(duì)比教學(xué)方法詳細(xì)分析了內(nèi)置數(shù)據(jù)結(jié)構(gòu)的操作,希望對(duì)Python語(yǔ)言的教學(xué)有幫助。