Python中的一切都是對(duì)象。每個(gè)對(duì)象都有自己的數(shù)據(jù)屬性和與之關(guān)聯(lián)的方法。為了有效和恰當(dāng)?shù)厥褂靡粋€(gè)對(duì)象,,我們應(yīng)該知道如何與它們交互,。 列表、元組和集合是三種重要的對(duì)象類型,。它們的共同點(diǎn)是它們都被用作數(shù)據(jù)結(jié)構(gòu),。為了創(chuàng)建健壯且性能良好的產(chǎn)品,必須非常了解編程語(yǔ)言的數(shù)據(jù)結(jié)構(gòu),。 在這篇文章中,,我們將看到這些結(jié)構(gòu)如何收集和存儲(chǔ)數(shù)據(jù),以及我們可以對(duì)它們進(jìn)行的操作,。我們將看到它們之間的異同,。 讓我們先簡(jiǎn)要解釋一下這些對(duì)象是什么。然后我們將對(duì)每個(gè)例子進(jìn)行詳細(xì)說(shuō)明,。
我們現(xiàn)在對(duì)這些容器有了基本的了解,。下面的示例將介紹如何與這些對(duì)象交互。 1.列表與集合我們可以根據(jù)字符串中的字符創(chuàng)建列表或集合,。要使用的函數(shù)是list和set函數(shù),。 text = 'Hello World!'print(list(text))['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!']print(set(text)){'H', 'W', 'o', ' ', 'l', 'r', '!', 'e', 'd'} 結(jié)果列表和集合對(duì)象的區(qū)別:
2.列表與集合索引在前面的例子中,,我們看到集合不具有順序,。因此,,我們不能像處理列表那樣對(duì)集合進(jìn)行切片或索引。
對(duì)集合進(jìn)行切片或索引會(huì)引發(fā)類型錯(cuò)誤,,因?yàn)檫@是與集合對(duì)象類型的屬性相關(guān)的問(wèn)題。 3.列表與元組列表和元組的區(qū)別在于易變性,。與列表不同,,元組是不可變的。例如,,我們可以向列表添加項(xiàng),,但元組不行。 list_a = [1,2,3,4]list_a.append(5)print(list_a)[1,2,3,4,5]tuple_a = (1,2,3,4)tuple_a.append(5)AttributeError: 'tuple' object has no attribute 'append' 更改集合的函數(shù)(例如append,、remove,、extend、pop)不適用于元組,。 4.元組中的可變?cè)?/strong>不變性可能是元組最具識(shí)別性的特征,。元組確定后不能改變。
雖然元組是不可變的,,但是它們可以包含可變的元素,,比如列表或集合。 tuple_a = ([1,3], 'a', 'b', 8)tuple_a[0][0] = 99print(tuple_a)([99, 3], 'a', 'b', 8) 5.Del函數(shù)Del函數(shù)代表delete,,因此它用于從集合中刪除項(xiàng),。它接受要?jiǎng)h除的項(xiàng)的索引。 由于集合是無(wú)序的,,因此它們中沒有項(xiàng)的索引,。因此,del函數(shù)不能用于集合,。
注意:有兩種方法可以索引列表:
6.Remove函數(shù)與del函數(shù)不同,,remove函數(shù)可用于列表和集合,。我們傳遞要?jiǎng)h除的項(xiàng)而不是其索引。 list_a = ['a','b',3,6]list_a.remove('a')print(list_a)['b', 3, 6]set_a = {'a','b',3,6}set_a.remove('a')print(set_a){3, 6, 'b'} 7.Discard函數(shù)Discard也可用于從集合中移除項(xiàng),。但是列表沒有discard屬性,。 當(dāng)我們?cè)噲D刪除一個(gè)不在集合中的項(xiàng)目時(shí),我們會(huì)觀察到“remove”和“Discard”之間的區(qū)別,。Remove將引發(fā)一個(gè)錯(cuò)誤,,但discard不會(huì)發(fā)生任何操作,。
8.Pop函數(shù)Pop函數(shù)可用于列表和集合。但是,,它在列表和集合上的工作方式不同,。 默認(rèn)情況下,pop函數(shù)從列表中刪除最后一項(xiàng)并返回它,。因此,,我們可以把它賦給一個(gè)變量。我們可以將索引傳遞給pop函數(shù),,刪除特定索引處的元素,。例如,pop(-2)將從末尾刪除第二項(xiàng),。 list_a = ['a','b',3,6,4]item = list_a.pop()print(list_a)['a', 'b', 3, 6]print(item)4 在集合上使用時(shí),,pop函數(shù)會(huì)刪除任意項(xiàng),因?yàn)榧现袥]有索引或順序,。
9.元組或元組列表這些集合對(duì)象可以從一個(gè)集合對(duì)象轉(zhuǎn)換為另一個(gè)集合對(duì)象,。如名稱所示,要使用的函數(shù)是list,、tuple和set,。 a = [1,2,3,'a',1,3,5]print(tuple(a))(1, 2, 3, 'a', 1, 3, 5)print(set(a)){1, 2, 3, 5, 'a'}b = {'a',1, 4, 8}print(list(b))[8, 1, 4, 'a']print(tuple(b))(8, 1, 4, 'a') 10.添加新項(xiàng)目由于元組是不可變的,我們只能向列表或集合添加新項(xiàng),。 例如,,append方法在列表末尾添加一個(gè)項(xiàng)。由于集合沒有結(jié)束或開始的概念,,我們不能使用append方法,。對(duì)于集合,add方法用于添加新項(xiàng),。
11.將項(xiàng)目插入列表insert函數(shù)還用于向列表中添加元素,。但是,它允許指定新元素的索引,。例如,,我們可以在列表的開頭添加一個(gè)新元素(index=0)。 a = [1, 2, 3, 4, 5]a.insert(0, 'a')a['a', 1, 2, 3, 4, 5] 因?yàn)樗枰饕?,所以不能?duì)集合使用insert函數(shù),。 12.組合兩個(gè)對(duì)象在某些情況下,我們需要將屬于同一個(gè)類型的項(xiàng)組合到一起,。我們有多個(gè)選擇來(lái)組合列表,、元組和集合的對(duì)象。 “+”運(yùn)算符可用于添加列表或元組,,但不能用于添加集合,。
我們可以用并集運(yùn)算符合并兩個(gè)集合,。將刪除重復(fù)的元素。 a = {1,2,3,4}b = {1,5,6}print(a.union(b)){1, 2, 3, 4, 5, 6} 在創(chuàng)建空字典時(shí),,我們需要記住這一點(diǎn),。如果我們只使用大括號(hào),里面什么也沒有,,Python會(huì)認(rèn)為它是一個(gè)空字典,。我們可以使用set函數(shù)創(chuàng)建一個(gè)空集。
13.排序只有擁有順序我們才能談分類,。因此,排序適用于列表和元組,。集合無(wú)法排序,,因?yàn)闆]有順序。 sort函數(shù)修改應(yīng)用它的對(duì)象,。因此,,我們只能在列表中使用它。元組是不可變的,,所以我們不能對(duì)它們進(jìn)行排序,。 a = [3,1,5,2]a.sort()print(a)[1, 2, 3, 5] 但是,我們可以對(duì)元組使用sorted函數(shù),。它創(chuàng)建一個(gè)排序的列表,,其中包含任何iterable。所以我們可以使用它來(lái)創(chuàng)建一個(gè)基于元組的排序列表,。
14.更新集合update方法可用于通過(guò)其他iterables中的項(xiàng)更新集合。由于集合的性質(zhì),,更新時(shí)會(huì)刪除重復(fù)項(xiàng),。 a = {'x', 1, 4}b = [3, 4, 1]c = ('x', 'y', 'z')a.update(b,c)print(a){1, 3, 4, 'y', 'z', 'x'} 15.長(zhǎng)度和計(jì)數(shù)len函數(shù)返回集合的長(zhǎng)度(即項(xiàng)目數(shù))。它適用于列表,、元組和集合,。 count函數(shù)可用于計(jì)算特定元素的出現(xiàn)次數(shù)。它只用于列表和元組,。由于集合不包含任何重復(fù)項(xiàng),,因此所有項(xiàng)的計(jì)數(shù)均為1。
結(jié)論我們已經(jīng)討論了Python中3種基本數(shù)據(jù)結(jié)構(gòu)之間的異同,。 有更多的方法和操作可以在這些對(duì)象上工作,。例如,,列表生成式在數(shù)據(jù)分析和操作中非常有用:https:///11-examples-to-master-python-list-comprehensions-33c681b56212 。 全面理解數(shù)據(jù)結(jié)構(gòu)是非常重要的,,因?yàn)樗鼈兪侨魏尉幊陶Z(yǔ)言的基本組成部分,。它們也是設(shè)計(jì)算法的關(guān)鍵因素。 |
|
來(lái)自: 新用戶0935snDB > 《待分類》