0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python序列的列表類(lèi)型介紹

麥辣雞腿堡 ? 來(lái)源:CSDN博客 ? 作者:時(shí)間靜止不是簡(jiǎn)史 ? 2023-03-08 17:27 ? 次閱讀

列表:用于存儲(chǔ)任意數(shù)目、任意類(lèi)型的數(shù)據(jù)集合。

列表是內(nèi)置可變序列,是包含多個(gè)元素的有序連續(xù)的內(nèi)存空間。

特點(diǎn): 有序, 可變, 中括號(hào)[]

列表的標(biāo)準(zhǔn)語(yǔ)法格式:a = [10,20,30,40] . 其中,10,20,30,40這些稱(chēng)為:列表a的元素。

注意:

字符串和列表都是序列類(lèi)型,一個(gè)字符串是一個(gè)字符序列,一個(gè)列表是任何元素的序列。

前面學(xué)習(xí)的很多字符串的方法,在列表中也有類(lèi)似的用法,幾乎一模一樣。

操作

列表的創(chuàng)建

使用list()可以將任何可迭代的數(shù)據(jù)轉(zhuǎn)化成列表

range()創(chuàng)建整數(shù)列表

推導(dǎo)式生成列表

列表:用于存儲(chǔ)任意數(shù)目、任意類(lèi)型的數(shù)據(jù)集合

list()創(chuàng)建

import random

a = [10086, 10010, 10000, "中國(guó)移動(dòng)", "中國(guó)聯(lián)通", "中國(guó)電信"]

b = [] # 創(chuàng)建一個(gè)空列表對(duì)象

print(a)

print(b)

list()創(chuàng)建

使用list()可以將任何可迭代的數(shù)據(jù)轉(zhuǎn)化成列表

a = list()

b = list(range(9))

c = list("中國(guó)移動(dòng),10086")

print(a)

print(b) # [0, 1, 2, 3, 4, 5, 6, 7, 8]

print(c) # ['中', '國(guó)', '移', '動(dòng)', ',', '1', '0', '0', '8', '6']

range()創(chuàng)建整數(shù)列表

range()可以幫助我們非常方便的創(chuàng)建整數(shù)列表,這在開(kāi)發(fā)中極其有用. 語(yǔ)法格式為:range([start,] end [,step])

start參數(shù):可選,表示起始數(shù)字。默認(rèn)是0

end參數(shù):必選,表示結(jié)尾數(shù)字

step參數(shù):可選,表示步長(zhǎng),默認(rèn)為1

a = list(range(3, 15, 2)) # 結(jié)果:[3, 5, 7, 9,11, 13]

b = list(range(15, 9, -1)) # 結(jié)果:[15, 14, 13,12, 11, 10]

c = list(range(3, -4, -1)) # 結(jié)果:[3, 2, 1, 0,-1, -2, -3]

print(a, b, c)

推導(dǎo)式生成列表

使用列表推導(dǎo)式可以非常方便的創(chuàng)建列表,在開(kāi)發(fā)中經(jīng)常使用

a = [x * 2 for x in range(5)]

#通過(guò)if過(guò)濾元素[0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]

b = [x * 2 for x in range(100) if x % 9 == 0]

print(a, b)

列表的新增

append()方法( 速度最快, 推薦使用 )

+運(yùn)算符操作 ( 生成新對(duì)象 )

extend()方法 ( 尾插, 不生成新對(duì)象 )

insert()插入元素 ( 插入到指定位置, 慎用 )

使用乘法擴(kuò)展列表,生成一個(gè)新列表,新列表元素是原列表元素的多次重復(fù)

列表元素的增加

1. append()方法 原地修改列表對(duì)象,是真正的列表尾部添加新的元素,速度最快,推薦使用

a = [20, 40] # 此列表創(chuàng)建可以重寫(xiě)為列表文字

a.append(80)

print(a) # 結(jié)果:[20, 40, 80]

2. +運(yùn)算符操作 并不是真正的尾部添加元素,而是創(chuàng)建新的列表對(duì)象;將原列表的元素和新列表的元素依次復(fù)制到新的列表對(duì)象中

a = [20, 40]

print("測(cè)試第一次時(shí)對(duì)象的引用: ", id(a))

a = a + [50]

print("測(cè)試第二次時(shí)對(duì)象的引用: ", id(a)) # 兩次地址不一樣,創(chuàng)建了新的對(duì)象

3. extend()方法 將目標(biāo)列表的所有元素添加到本列表的尾部,屬于原地操作,不創(chuàng)建新的列表對(duì)象

a = [20, 40]

print(id(a))

b = [50, 60]

a.extend(b) # 原對(duì)象修改

print(id(a), a)

a = a + b # 產(chǎn)生新對(duì)象

print(id(a), a)

4. insert()插入元素

使用 insert() 方法可以將指定的元素插入到列表對(duì)象的任意制定位置.

這樣會(huì)讓插入位置后面所有的元素進(jìn)行移動(dòng),會(huì)影響處理速度. 涉及大量元素時(shí),盡量避免使用。

a = [10, 20, 30]

a.insert(2, 100) # 在2號(hào)下標(biāo)位置(起點(diǎn)為0)放入100

print(a) # 結(jié)果:[10, 20, 100, 30]

5. 乘法擴(kuò)展 使用乘法擴(kuò)展列表,生成一個(gè)新列表,新列表元素是原列表元素的多次重復(fù)

a = ["托尼斯塔克", "愛(ài)你三千遍"]

d = a * 30 # 3000是在太多了...

print(a)

print(d)

列表的刪除:

del() 刪除列表指定位置的元素

pop()刪除并返回指定位置元素

刪除首次出現(xiàn)的指定元素,若不存在該元素拋出異常

列表元素的刪除

1. del刪除, 刪除列表指定位置的元素

a = [100, 200, 888, 300, 400]

del a[2]

print(a) # 結(jié)果:[100,200,300,400]

2. pop()方法

pop()刪除并返回指定位置元素,如果未指定位置則默認(rèn)操作列表最后一個(gè)元素

a = [10, 20, 30, 40, 50]

b1 = a.pop() # 結(jié)果:b1=50

print(a, b1) # 結(jié)果:[10, 20, 30, 40] 50

b2 = a.pop(1)

print(a, b2) # 結(jié)果:[10, 30, 40],20

3.remove()方法

刪除首次出現(xiàn)的指定元素,若不存在該元素拋出異常

a = [10, 20, 30, 40, 50, 20, 30, 20, 30]

a.remove(20) # [10, 30, 40, 50, 20, 30, 20,30]

print(a)

a.remove(90) # ValueError: list.remove(x): x not in list

復(fù)制列表所有的元素到新列表對(duì)象:

復(fù)制列表所有的元素到新列表對(duì)象

只是將list2也指向了列表對(duì)象,也就是說(shuō)list2和list2持有地址值是相同的. 列表對(duì)象本身的元素并沒(méi)有復(fù)制。

list1 = [30, 40, 50]

list2 = list1

print(list2)

訪問(wèn) & 計(jì)數(shù)

訪問(wèn):

通過(guò)索引直接訪問(wèn)元素

index()獲得指定元素在列表中首次出現(xiàn)的索引

列表元素訪問(wèn)和計(jì)數(shù)

1. 通過(guò)索引直接訪問(wèn)元素

我們可以通過(guò)索引直接訪問(wèn)元素。索引的區(qū)間在 [0, 列表長(zhǎng)度-1] 這個(gè)范圍。超過(guò)這個(gè)范圍則會(huì)拋出異常。

a = [10, 20, 30, 40, 50, 20, 30, 20, 30]

print(a[2]) # 結(jié)果:30

print(a[10]) # 報(bào)錯(cuò):IndexError: list index out of range

2. index()獲得指定元素在列表中首次出現(xiàn)的索引

index() 可以獲取指定元素首次出現(xiàn)的索引位置。語(yǔ)法是: index(value,[start, [end]]) 。其中, start 和 end 指定了搜索的范圍。

print(a.index(20)) # 1

print(a.index(20, 3)) # 5

print(a.index(30, 5, 7)) # 6

print(a[a.index(20)])

print(a[a.index(20, 3)])

print(a[a.index(30, 5, 7)])

計(jì)數(shù):

count()獲得指定元素在列表中出現(xiàn)的次數(shù)

len()返回列表長(zhǎng)度,即列表中包含元素的個(gè)數(shù)

3. count()獲得指定元素在列表中出現(xiàn)的次數(shù)

print("20在列表中出現(xiàn)的次數(shù):", a.count(20))

4. len()返回列表長(zhǎng)度,即列表中包含元素的個(gè)數(shù)。

a = [10, 20, 30]

print(len(a))

列表的遍歷:

列表的遍歷

print("測(cè)試列表的遍歷")

a = [10, 20, 30, 40]

for o in a:

print(o)

常見(jiàn)用法

列表常見(jiàn)方法如下圖所示, 下面我們對(duì)部分用法進(jìn)行操作

切片操作:

切片操作

類(lèi)似字符串的切片操作,對(duì)于列表的切片操作和字符串類(lèi)似.

標(biāo)準(zhǔn)格式為:[起始偏移量start:終止偏移量end[:步長(zhǎng)step]]

切片操作時(shí),起始偏移量和終止偏移量不在 [0,字符串長(zhǎng)度-1] 這個(gè)范圍,也不會(huì)報(bào)錯(cuò)。

起始偏移量 小于0 則會(huì)當(dāng)做 0 ,終止偏移量 大于 “長(zhǎng)度-1” 會(huì)被當(dāng)成 ”長(zhǎng)度-1”

print([10, 20, 30, 40][1:30])

成員資格判斷:

成員資格判斷

判斷列表中是否存在指定的元素,我們可以使用 count() 方法,返回0則表示不存在,返回大于0則表示存在

但是,一般我們會(huì)使用更加簡(jiǎn)潔的 in 關(guān)鍵字來(lái)判斷,直接返回 True 或 False

a = [10, 20, 30, 40, 50, 20, 30, 20, 30]

print(20 in a)

print(20 not in a)

print(60 not in a)

列表排序:

sort(): 修改原列表,不建新列表的排序

sort(): 建新列表的排序

reversed(): 返回迭代器

列表排序

1.修改原列表,不建新列表的排序

sort() 默認(rèn)升序, 參數(shù) reverse 代表降序

a = [2, 3, 1, 5, 4]

print(id(a))

print(a.sort())

print(a)

a.sort(reverse=True)

print(a)

random.shuffle(a) # 打亂順序

print(a)

2. 建新列表的排序

我們也可以通過(guò)內(nèi)置函數(shù)sorted()進(jìn)行排序,這個(gè)方法返回新列表,不對(duì)原列表做修改。

a = [20, 10, 30, 40]

print(id(a))

b = sorted(a)

c = sorted(a, reverse=True)

print(b, c)

3. reversed()返回迭代器

內(nèi)置函數(shù)reversed()也支持進(jìn)行逆序排列,與列表對(duì)象reverse()方法不同的是,

內(nèi)置函數(shù)reversed()不對(duì)原列表做任何修改,只是返回一個(gè)逆序排列的迭代器對(duì)象

a = [20, 10, 30, 40]

b = reversed(a)

print(type(c))

print(list(c))

關(guān)于reversed()

我們打印輸出c發(fā)現(xiàn)提示是:list_reverseiterator。也就是一個(gè)迭代對(duì)象。

同時(shí),我們使用list(c)進(jìn)行輸出,發(fā)現(xiàn)只能使用一次。

第一次輸出了元素,第二次為空。那是因?yàn)榈鷮?duì)象在第一次時(shí)已經(jīng)遍歷結(jié)束了,第二次不能再使用。

max, min 和 sum

max, min用于返回列表中最大和最小值

sum 用于統(tǒng)計(jì)列表中各元素的和

列表相關(guān)的其他內(nèi)置函數(shù)匯總

1. max和min

a = [3, 10, 20, 15, 9]

print(max(a))

print(min(a))

2. sum

print(sum(a))

多維列表

二維列表

一維列表可以幫助我們存儲(chǔ)一維、線性的數(shù)據(jù)。

二維列表可以幫助我們存儲(chǔ)二維、表格的數(shù)據(jù)。例如下表的數(shù)據(jù):

隊(duì)名 第幾季 勝者

才子隊(duì) 1 比爾

九頭蛇隊(duì) 2 皮爾斯

巨亨隊(duì) 3 卡羅爾

二維表的訪問(wèn)方式:

a = [

["才子隊(duì)", 1, "比爾"],

["九頭蛇隊(duì)", 2, "皮爾斯"],

["巨亨隊(duì)", 3, "卡羅爾"],

]

輸出單個(gè)元素

print(a[0][0], a[1][1], a[1][2])

嵌套循環(huán)打印二維列表所有的數(shù)據(jù)

for m in range(3):

for n in range(3):

print(a[m][n], end=" ")

print()

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3649

    瀏覽量

    94356
  • 序列
    +關(guān)注

    關(guān)注

    0

    文章

    70

    瀏覽量

    19650
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4813

    瀏覽量

    85316
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python中常用的數(shù)據(jù)類(lèi)型

    )和False(假)。4. 列表列表Python中使用最頻繁的數(shù)據(jù)類(lèi)型,集合中可以放任何數(shù)據(jù)類(lèi)型,可對(duì)集合進(jìn)行創(chuàng)建、查找、切片、增加、修改、刪除、循環(huán)和排序操作。5. 元組元組和
    發(fā)表于 04-19 15:14

    如何使用Python對(duì)列表進(jìn)行求和?

    [tr]在本簡(jiǎn)短的教程中,我們將介紹如何使用Python查找sum()[tr]一份名單。我們研究了各種方法來(lái)做到這一點(diǎn),以及它們的局限性。[tr]本教程是我們?cè)赱tr]柔性[tr],就經(jīng)常使用的或有
    發(fā)表于 09-01 23:14

    Python數(shù)據(jù)類(lèi)型有幾種

    Python布爾類(lèi)型也是用于邏輯運(yùn)算,有兩個(gè)值:True(真)和False(假)?! ?. 列表  列表Python中使用最頻繁的數(shù)據(jù)
    發(fā)表于 02-18 17:59 ?1573次閱讀

    Python學(xué)習(xí)要點(diǎn):自定義序列實(shí)現(xiàn)切片功能

    基于原生的序列類(lèi)型(如字符串、列表、元組),那么,我們是否可以定義自己的序列類(lèi)型并讓它支持切片語(yǔ)法呢?更進(jìn)一步,我們是否可以自定義其它對(duì)象(
    發(fā)表于 11-24 11:51 ?746次閱讀

    Python基礎(chǔ)變量類(lèi)型—List分析

    本文基于Python基礎(chǔ),主要介紹Python基礎(chǔ)中l(wèi)ist列表,通過(guò)list列表的兩個(gè)函數(shù) ,對(duì)list的語(yǔ)法做了詳細(xì)的講解,用豐富的案
    的頭像 發(fā)表于 12-24 17:37 ?1177次閱讀

    python列表的詳細(xì)介紹

    python列表 列表(英文名 list),是由一系列元素按順序進(jìn)行排列而成的容器。 這里面有兩個(gè)重點(diǎn): 元素 :沒(méi)有要求同一類(lèi)型,所以可以是任意類(lèi)
    的頭像 發(fā)表于 02-22 15:14 ?1461次閱讀

    python列表序列操作教程

    python列表也是序列對(duì)象,可以進(jìn)行序列通用的操作,類(lèi)似字符串序列的操作。
    的頭像 發(fā)表于 02-23 15:04 ?731次閱讀

    介紹python列表的邊界和嵌套

    本文介紹python列表的邊界和嵌套。只能訪問(wèn)python列表范圍內(nèi)的項(xiàng),python
    的頭像 發(fā)表于 02-27 14:49 ?1030次閱讀

    python列表特定方法有哪些

    python列表類(lèi)似其他語(yǔ)言的數(shù)組,但是python列表的元素(項(xiàng))可以同時(shí)為不同類(lèi)型的對(duì)象,即沒(méi)有固定
    的頭像 發(fā)表于 02-27 14:51 ?562次閱讀

    Python序列的元組類(lèi)型介紹

    介紹 列表屬于可變序列,可以任意修改列表中的元素。 元組屬于不可變序列,不能修改元組中的元素。 元組特點(diǎn): 有序, 不可變, 小括號(hào) ( )
    的頭像 發(fā)表于 03-08 17:30 ?1197次閱讀

    Python序列的字典類(lèi)型介紹

    , 大括號(hào) {} + 鍵值對(duì) k,v 字典是 Python 項(xiàng)目中最常用的序列類(lèi)型之一, 對(duì)應(yīng)Java 中常用的 Json 數(shù)據(jù)類(lèi)型 操作 字典的創(chuàng)建 通過(guò) {} + kv 來(lái)創(chuàng)建 通
    的頭像 發(fā)表于 03-08 17:35 ?1411次閱讀
    <b class='flag-5'>Python</b><b class='flag-5'>序列</b>的字典<b class='flag-5'>類(lèi)型</b><b class='flag-5'>介紹</b>

    Python列表的基本概念、常用操作及實(shí)際應(yīng)用

    于各種編程場(chǎng)景,從簡(jiǎn)單的數(shù)據(jù)處理到復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和算法。本文將介紹Python列表的基本概念、常用操作以及一些實(shí)際應(yīng)用。
    的頭像 發(fā)表于 04-16 10:42 ?2000次閱讀

    python列表和數(shù)組的區(qū)別

    內(nèi)部實(shí)現(xiàn)、性能、操作方式等多個(gè)方面進(jìn)行詳細(xì)分析,以幫助讀者更好地理解它們之間的區(qū)別和適用場(chǎng)景。 一、內(nèi)部實(shí)現(xiàn): 列表(List): Python中的列表是一種有序的、可變的、可包含不同類(lèi)型
    的頭像 發(fā)表于 11-21 15:13 ?2608次閱讀

    python輸出list的每一個(gè)元素

    使用for循環(huán)來(lái)遍歷列表,并輸出其中的每一個(gè)元素。接下來(lái),我將詳盡、詳實(shí)、細(xì)致地介紹一下Python輸出列表的每一個(gè)元素的方法,希望能對(duì)你有所幫助。 首先,我們需要明確一下什么是
    的頭像 發(fā)表于 11-21 16:16 ?1863次閱讀

    python如何遍歷列表并提取

    遍歷列表Python中非常常見(jiàn)的操作之一,可以使用for循環(huán)或者while循環(huán)來(lái)實(shí)現(xiàn)。下面我將詳細(xì)介紹如何使用for循環(huán)遍歷列表并提取元素。 首先,讓我們簡(jiǎn)單了解一下
    的頭像 發(fā)表于 11-23 15:55 ?1597次閱讀