久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

15個(gè)例子掌握Python列表,,集合和元組

 新用戶0935snDB 2022-02-07
文章圖片1

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ō)明,。

  • List是Python中的一個(gè)內(nèi)置數(shù)據(jù)結(jié)構(gòu),。它用方括號(hào)中的數(shù)據(jù)點(diǎn)集合表示。列表可用于存儲(chǔ)任何數(shù)據(jù)類型或不同的數(shù)據(jù)類型,。列表是可變的,,這也是它們?nèi)绱顺S玫脑蛑弧?/li>
  • 元組是用逗號(hào)分隔并用括號(hào)括起來(lái)的值的集合。與列表不同,,元組是不可變的,。不變性可以看作元組的識(shí)別特征。
  • Set是不同的不可變對(duì)象的無(wú)序集合,。集合包含唯一的元素,。雖然集合是可變的,,但是集合的元素必須是不可變的,。沒有與集合的元素相關(guān)聯(lián)的順序。因此,,它不像列表那樣支持索引或切片,。
文章圖片2

我們現(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ū)別:

  • 列表包含所有字符,而集合只包含唯一字符,。
  • 列表是根據(jù)字符串中字符的順序排序的,。集合的元素并沒有順序。

2.列表與集合索引

在前面的例子中,,我們看到集合不具有順序,。因此,,我們不能像處理列表那樣對(duì)集合進(jìn)行切片或索引。

text = 'Hello World!'list_a = list(text)print(list_a[:2])['H','e']set_a = set(text)print(set_a[:2])TypeError: 'set' object is not subscriptable

對(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 = (35'x'5)tuple_a[0] = 7 # 錯(cuò)誤

雖然元組是不可變的,,但是它們可以包含可變的元素,,比如列表或集合。

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ù)不能用于集合,。

list_a = [1, 2, 3, 4]del(list_a[0])print(list_a)[2, 3, 4]

注意:有兩種方法可以索引列表:

  • 自始至終:0,,1,2,,3
  • 從尾到頭:-1,,-2,-3

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'36]set_a = {'a','b',3,6}set_a.remove('a')print(set_a){36'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ā)生任何操作,。

# removea = {1,2,3}a.remove(5)KeyError: 5# Discarda = {1,2,3}a.discard(5)print(a){1,2,3}

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)榧现袥]有索引或順序,。

set_a =  {'a','b',3, 6, 4}item2 = set_a.pop()print(set_a){4, 6, 'a''b'}print(item2)3

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),。

a = [1,2,3]a.append(4)print(a)[1,2,3,4]b = {1,2,3}b.add(4)print(b){1,2,3,4}

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)算符可用于添加列表或元組,,但不能用于添加集合,。

a = [1,2,3]b = [11,32,1]print(a + b)[1, 2, 3, 11, 32, 1]print(tuple(a) + tuple(b))(1, 2, 3, 11, 32, 1)

我們可以用并集運(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è)空集。

a = {}print(type(a))<class 'dict'>b = set()print(type(b))<class 'set'>c = set({})print(type(c))<class 'set'>

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è)基于元組的排序列表,。

b = (6,1,4,2)print(sorted(b))[1,2,4,6]
  • sort:對(duì)對(duì)象進(jìn)行排序,,但不返回任何內(nèi)容。
  • sorted:返回iterable中已排序項(xiàng)的列表,,但不修改原始對(duì)象,。

14.更新集合

update方法可用于通過(guò)其他iterables中的項(xiàng)更新集合。由于集合的性質(zhì),,更新時(shí)會(huì)刪除重復(fù)項(xiàng),。

a = {'x'14}b = [341]c = ('x''y''z')a.update(b,c)print(a){134'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。

a = [1,4,5,6,1]b = (3,4)c = {1,2,3,4}print(len(a), len(b), len(c))5 2 4print(a.count(1), b.count(3))2 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)鍵因素。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多