日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python 序列

發(fā)布時間:2024/9/30 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 序列 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目? ?錄

Python 序列簡介

Python 序列圖表

列表與列表推導(dǎo)式

列表的創(chuàng)建與刪除

創(chuàng)建列表

刪除列表

列表常用方法

(1)append()、insert()、extend()

(2)pop()、remove()、clear()

(3)count()、index()

(4)sort()、reverse()

(5)內(nèi)置函數(shù)對列表的操作

內(nèi)置函數(shù)map()

reduce()

內(nèi)置函數(shù) filter()

列表推導(dǎo)式

切片

元組

生成器推導(dǎo)式

字典

字典創(chuàng)建、元素添加、修改與刪除


Python 序列簡介

  • Python序列類似于其他語言中的數(shù)組,但功能要強(qiáng)大很多。
  • Python中常用的序列結(jié)構(gòu)有列表、元組、字符串,字典、集合以及range等對象也支持很多類似的操作。
  • 列表、元組、字符串支持雙向索引,第一個元素下標(biāo)為0,第二個元素下標(biāo)為1,以此類推;最后一個元素下標(biāo)為-1,倒數(shù)第二個元素下標(biāo)為-2,以此類推。

Python 序列圖表

?

列表

元組

字典

集合

類型名稱

list

tuple

dict

set

定界符

方括號[]

圓括號()

大括號{}

大括號{}

是否可變

是否有序

是否支持下標(biāo)

是(使用序號作為下標(biāo))

是(使用序號作為下標(biāo))

是(使用“鍵”作為下標(biāo))

元素分隔符

逗號

逗號

逗號

逗號

對元素形式的要求

:

必須可哈希

對元素值的要求

鍵”必須可哈希

必須可哈希

元素是否可重復(fù)

鍵”不允許重復(fù),“值”可以重復(fù)

元素查找速度

非常慢

很慢

非???/span>

非???/span>

新增和刪除元素速度

尾部操作快 其他位置慢

不允許

列表與列表推導(dǎo)式

  • 列表是Python中內(nèi)置有序、可變序列,列表的所有元素放在一對中括號“[]”中,并使用逗號分隔開;
  • 當(dāng)列表元素增加或刪除時,列表對象自動進(jìn)行擴(kuò)展或收縮內(nèi)存,保證元素之間沒有縫隙
  • 在Python中,一個列表中的數(shù)據(jù)類型可以各不相同,可以同時分別為整數(shù)、實(shí)數(shù)、字符串等基本類型,甚至是列表、元組、字典、集合以及其他自定義類型的對象。

[10, 20, 30, 40]

['crunchy frog', 'ram bladder', 'lark vomit']

['spam', 0, 5, [10, 20]]

[['file1', 200,7], ['file2', 260,9]]

  • 小提示:Python采用的是基于值的內(nèi)存管理模式,Python變量不直接存儲值,而是存儲值的引用,Python列表中元素也是存儲值的引用,所以列表中各元素可以是不同類型的數(shù)據(jù)?!静皇侵苯哟鎯?shù)值,存儲的是:“引用”。】

列表的創(chuàng)建與刪除

創(chuàng)建列表

創(chuàng)建列表之后,可以使用整數(shù)作為下標(biāo)來訪問其中的元素,其中0表示第1個元素,1表示第2個元素,2表示第3個元素,以此類推;列表還支持使用負(fù)整數(shù)作為下標(biāo),其中-1表示最后1個元素,-2表示倒數(shù)第2個元素,-3表示倒數(shù)第3個元素,以此類推。

刪除列表

當(dāng)一個列表不再使用時,可以使用del命令將其刪除,這一點(diǎn)適用于所有類型的Python對象。另外,也可以使用del命令刪除列表、字典等可變序列中的部分元素,而不能刪除元組、字符串等不可變序列中的部分元素。

??

拓展知識:垃圾回收機(jī)制。一般來說,使用del刪除對象之后Python會在恰當(dāng)?shù)臅r機(jī)調(diào)用垃圾回收機(jī)制來釋放內(nèi)存,我們也可以在必要的時候?qū)隤ython標(biāo)準(zhǔn)庫gc之后調(diào)用gc.collect()函數(shù)立刻啟動垃圾回收機(jī)制來釋放內(nèi)存。

列表常用方法

方法

說明

lst.append(x)

將元素x添加至列表lst尾部

lst.extend(L)

將列表L中所有元素添加至列表lst尾部

lst.insert(index, x)

在列表lst指定位置index處添加元素x,該位置后面的所有元素后移一個位置

lst.remove(x)

在列表lst中刪除首次出現(xiàn)的指定元素,該元素之后的所有元素前移一個位置

lst.pop([index])

刪除并返回列表lst中下標(biāo)為index(默認(rèn)為-1)的元素

lst.clear()

刪除列表lst中所有元素,但保留列表對象

lst.index(x)

返回列表lst中第一個值為x的元素的下標(biāo),若不存在值為x的元素則拋出異常

lst.count(x)

返回指定元素x在列表lst中的出現(xiàn)次數(shù)

lst.reverse()

對列表lst所有元素進(jìn)行逆序

lst.sort(key=None, reverse=False)

對列表lst中的元素進(jìn)行排序,key用來指定排序依據(jù),reverse決定升序(False)還是降序(True

lst.copy()

返回列表lst的淺復(fù)制

(1)append()、insert()、extend()

  • append()?????用于向列表尾部追加一個元素。
  • insert()????????用于向列表任意指定位置插入一個元素。
  • extend()??????用于將另一個列表中的所有元素追加至當(dāng)前列表的尾部。
  • 這3個方法,都屬于原地操作,不影響列表對象在內(nèi)存中的起始地址。

  • 運(yùn)算符+和*也可以實(shí)現(xiàn)列表增加元素的目的,但這兩個運(yùn)算符不屬于原地操作,而是返回新列表

(2)pop()、remove()、clear()

  • pop()用于刪除并返回指定位置(默認(rèn)是最后一個)上的元素。

  • remove()用于刪除列表中第一個值與指定值相等的元素。

  • clear()用于清空列表。

  • 這3個方法屬于原地操作,不影響列表對象的內(nèi)存地址。使用del命令刪除列表中指定位置的元素,屬于原地操作。

  • 小提示:在列表中間位置插入或刪除元素時,會影響該位置后面所有元素的下標(biāo),要盡量避免在列表中間位置進(jìn)行元素的插入和刪除操作。?

(3)count()、index()

  • 列表方法count()用于返回列表中指定元素出現(xiàn)的次數(shù),index()用于返回指定元素在列表中首次出現(xiàn)的位置,如果該元素不在列表中則拋出異常。
  • 除此之外,成員測試運(yùn)算符in也可以測試列表中是否存在某個元素。

(4)sort()、reverse()

  • 列表對象的sort()方法用于按照指定的規(guī)則對所有元素進(jìn)行排序,默認(rèn)規(guī)則是直接比較元素大小;reverse()方法用于將列表所有元素逆序排列。

??

(5)內(nèi)置函數(shù)對列表的操作

  • max()、min()函數(shù):用于返回列表中所有元素的最大值和最小值。
  • sum()函數(shù):用于返回數(shù)值型列表中所有元素之和。
  • len()函數(shù):用于返回列表中元素個數(shù)。
  • zip()函數(shù):用于將多個列表中元素重新組合為元組,并返回包含這些元組的zip對象。
  • enumerate()函數(shù):返回包含若干下標(biāo)和值的迭代對象。

內(nèi)置函數(shù)map()

可以將一個函數(shù)依次作用(或映射)到序列或迭代器對象的每個元素上,并返回一個map對象作為結(jié)果,其中每個元素是原序列中元素經(jīng)過該函數(shù)處理后的結(jié)果,不對原序列或迭代器對象做任何修改。

reduce()

內(nèi)置函數(shù) filter()

列表推導(dǎo)式

阿凡提與國王比賽下棋,國王說要是自己輸了的話阿凡提想要什么他都可以拿得出來。阿凡提說那就要點(diǎn)米吧,棋盤一共64個小格子,在第一個格子里放1粒米,第二個格子里放2粒米,第三個格子里放4粒米,第四個格子里放8粒米,以此類推,后面每個格子里的米都是前一個格子里的2倍,一直把64個格子都放滿。需要多少粒米呢?

切片

  • 切片適用于列表、元組、字符串、range對象等類型,但作用于列表時功能最強(qiáng)大。可以使用切片來截取列表中的任何部分,得到一個新列表,也可以通過切片來修改刪除列表中部分元素,甚至可以通過切片操作為列表對象增加元素。
  • 切片使用2個冒號分隔的3個數(shù)字來完成:
  • 第一個數(shù)字表示切片開始位置(默認(rèn)為0)。
  • 第二個數(shù)字表示切片截止(但不包含)位置(默認(rèn)為列表長度)。
  • 第三個數(shù)字表示切片的步長(默認(rèn)為1),當(dāng)步長省略時可以順便省略最后一個冒號。
    • 切片操作不會因?yàn)橄聵?biāo)越界而拋出異常,而是簡單地在列表尾部截斷或者返回一個空列表,代碼具有更強(qiáng)的健壯性

    元組

    • 元組也是Python的一個重要序列結(jié)構(gòu)。從形式上,元組的所有元素放在一對圓括號中,元素之間使用逗號分隔。

    • 元組屬于不可變(immutable)序列,一旦創(chuàng)建,沒有任何方法可以修改元組中元素的值,也無法為元組增加或刪除元素。
    • 元組沒有提供append()、extend()和insert()等方法,無法向元組中添加元素;同樣,元組也沒有remove()和pop()方法,也不支持對元組元素進(jìn)行del操作,不能從元組中刪除元素,而只能使用del命令刪除整個元組。
    • 元組也支持切片操作,但是只能通過切片來訪問元組中的元素,而不支持使用切片來修改元組中元素的值,也不支持使用切片操作來為元組增加或刪除元素。從一定程度上講,可以認(rèn)為元組是輕量級的列表,或者“常量列表”。
    • Python的內(nèi)部實(shí)現(xiàn)對元組做了大量優(yōu)化,訪問和處理速度比列表更快。
    • 如果定義了一系列常量值,主要用途僅是對它們進(jìn)行遍歷或其他類似用途,而不需要對其元素進(jìn)行任何修改,那么一般建議使用元組而不用列表。元組在內(nèi)部實(shí)現(xiàn)上不允許修改其元素值,從而使得代碼更加安全,例如調(diào)用函數(shù)時使用元組傳遞參數(shù)可以防止在函數(shù)中修改元組,而使用列表則很難做到這一點(diǎn)。
    • 作為不可變序列,與整數(shù)、字符串一樣,元組可用作字典的鍵,而列表則永遠(yuǎn)都不能當(dāng)做字典鍵使用,也不能作為集合中的元素,因?yàn)榱斜聿皇遣豢勺兊?#xff0c;或者說不可哈希。

    生成器推導(dǎo)式

    • 從形式上看,生成器推導(dǎo)式與列表推導(dǎo)式非常接近,只是生成器推導(dǎo)式使用圓括號而不是列表推導(dǎo)式所使用的方括號。
    • 與列表推導(dǎo)式不同的是,生成器推導(dǎo)式的結(jié)果是一個生成器對象,而不是列表,也不是元組。
    • 使用生成器對象的元素時,可以根據(jù)需要將其轉(zhuǎn)化為列表或元組,也可以使用生成器對象的__next__()方法或者內(nèi)置函數(shù)next()進(jìn)行遍歷,或者直接將其作為迭代器對象來使用。
    • 不管用哪種方法訪問其元素,當(dāng)所有元素訪問結(jié)束以后,如果需要重新訪問其中的元素,必須重新創(chuàng)建該生成器對象。

    字典

    • 字典(dictionary)是包含若干“鍵:值”元素的無序可變序列,字典中的每個元素包含“鍵”和“值”兩部分,表示一種映射或?qū)?yīng)關(guān)系,也稱關(guān)聯(lián)數(shù)組。定義字典時,每個元素的“鍵”和“值”用冒號分隔,不同元素之間用逗號分隔,所有的元素放在一對大括號“{”和“}”中。
    • 字典中的“鍵”可以是Python中任意不可變數(shù)據(jù),例如整數(shù)、實(shí)數(shù)、復(fù)數(shù)、字符串、元組等等,但不能使用列表、集合、字典或其他可變類型作為字典的“鍵”。另外,字典中的“鍵”不允許重復(fù),而“值”是可以重復(fù)的。

    字典創(chuàng)建、元素添加、修改與刪除

    ??

    ?

    總結(jié)

    以上是生活随笔為你收集整理的Python 序列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。