1.列表的定義及增刪改查

一、列表

列表由一系列按特定順序排列的元素組成。我們可以創(chuàng)建包含字母表中所有字母、數(shù)字0~9,也可以將任何東西加入列表中,其中的元素之間可以沒有任何關(guān)系

鑒于列表通常包含多個(gè)元素,所以給列表指定一個(gè)表示復(fù)數(shù)的名稱(如:names)是一個(gè)不錯(cuò)的主意。

python中,用方括號(hào)[]來表示列表,并用逗號(hào)來分隔其中的元素。

若是直接打印列表,Python會(huì)打印列表的內(nèi)部表示,包括方括號(hào)

二、定義列表

我們創(chuàng)建的大多數(shù)列表都將是動(dòng)態(tài)的,這意味著在列表創(chuàng)建之后,將隨著程序的運(yùn)行增刪元素。

例如:你創(chuàng)建一個(gè)游戲,要求玩家射殺小怪獸;為此,可在開始時(shí)將一些小怪獸存儲(chǔ)在列表中,然后每當(dāng)有小怪獸被消滅時(shí),都將其從列表中刪除,而每次有新的小怪獸出現(xiàn)在屏幕上時(shí),都將其添加到列表中。在整個(gè)游戲運(yùn)行期間,小怪獸列表的長(zhǎng)度將不斷變化。

1.[]中括號(hào)

用中括號(hào)括起一堆數(shù)據(jù)即可,數(shù)據(jù)之間用逗號(hào)隔開。

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

(1)創(chuàng)建空列表

不知道要向列表中添加什么數(shù)據(jù),也可創(chuàng)建一個(gè)空列表。

empty = []

(2)列表中嵌套列表

lis1 = [1,'思齊',155.520,[1,2,2] ]

可以看到上面這個(gè)列表包含有: 整型、字符串、浮點(diǎn)型數(shù)據(jù)、子列表。

2.list()方法

list()方法用于把一個(gè)可迭代對(duì)象轉(zhuǎn)換為列表。

list(iterable)
'''
    功能: 把一個(gè)可迭代對(duì)象轉(zhuǎn)換為列表.
    
    參數(shù): 
        ① iterable: 可迭代對(duì)象。
    
    返回值: 列表。
'''

(1)創(chuàng)建空列表

empty = list()
empty

(2)將字符串中的每個(gè)字符迭代存放進(jìn)列表

a = list('Hero') 
a

(3)將元組中的每個(gè)元素迭代存放進(jìn)列表

b = list( (1,2,3,4,5) )
b

(4)與range()結(jié)合生成數(shù)字列表

numbers = list(range(1,6))
numbers

三、列表的訪問

可以通過元素的索引值(index)從列表中獲取單個(gè)元素

1.訪問列表元素

列表是有序集合,因此想要訪問列表的任意元素,只需將該元素的位置或索引告訴Python即可。

要訪問列表元素,可指出列表的名稱,再指出元素的索引,并將其放在方括號(hào)內(nèi)。

(1)示例

① 例1
fruits = ['葡萄','草莓','大鴨梨','菠蘿']
print(fruits[2])
'大鴨梨'

當(dāng)我們請(qǐng)求獲取列表元素時(shí),Python只返回該元素,而不包括方括號(hào)和引號(hào)。

此外,還可以對(duì)任何列表元素調(diào)用一些方法,如title()、uper()等

2.索引

列表索引值從 0 開始。

Python中,凡是順序索引第一個(gè)列表元素的索引為0,而不是1。在大多數(shù)編程語言中都是如此,這與列表操作的底層實(shí)現(xiàn)相關(guān)。因?yàn)橛?jì)算機(jī)本身是二進(jìn)制的,在二進(jìn)制世界里只有兩個(gè)數(shù):0 、1,0也就是二進(jìn)制中第一個(gè)數(shù),秉承這個(gè)傳統(tǒng),0也就用于表示第一個(gè)數(shù)。

如果結(jié)果出乎意料,請(qǐng)看看你是否犯了簡(jiǎn)單的差一錯(cuò)誤

第二個(gè)列表元素的索引為1。依此類推,要訪問列表的任何元素,都可將其位置減1,并將結(jié)果作為索引(index)。

(1)索引為負(fù)值

Python為訪問最后一個(gè)列表元素提供了一種特殊語法。通過將索引指定為-1,可讓Python返回最后一個(gè)列表元素。

這種語法很有用,因?yàn)?strong>我們經(jīng)常需要在不知道列表長(zhǎng)度的情況訪問最后的元素。

這種約定也適用于其他負(fù)數(shù)索引,例如:索引-2返回倒數(shù)第二個(gè)列表元素,素引-3返回倒數(shù)第三個(gè)列表元素,以此類推。

① 示例
fruits = ['葡萄','草莓','大鴨梨','菠蘿']
fruits[-1]
'菠蘿'

3.使用列表中的各個(gè)值

可像使用其他變量一樣使用列表中的各個(gè)值。例如,你可以使用拼接根據(jù)列表中的值來創(chuàng)建消息。

animals = ["rabbit","dog","panda","cat"] 
# 使用animals[2]的值生成一個(gè)句子,并將其存儲(chǔ)在變量message中
message = "My favorite animal is the " + animals[2] + "."   
print(message)
My favorite animal is the panda.

四、修改列表元素

1.修改

修改列表元素的語法和訪問列表元素的語法相似。

通過指定列表名和要修改元素的索引值(index)從列表中獲取單個(gè)元素,再映射1個(gè)新值。

fruit = ['葡萄','草莓','大鴨梨','菠蘿']
fruit[2] = '大西瓜'
fruit
# ['葡萄', '草莓', '大西瓜', '菠蘿']

五、添加

1.append(): 末尾單一元素添加

列表名.append( 想要添加的元素 )

'''
    功能: 向列表中添加元素,**每次只能加一個(gè)元素,并且是往列表的末尾添加數(shù)據(jù)**
        (也可理解為追加、排隊(duì)增加)。
          Append object to the end of the list.
    
    參數(shù): 想要添加的元素。
    
    返回值: 添加完成后的列表。
'''
① 追加1個(gè)元素
num = [1,2,3,4,5]
num.append(6)
num
# 會(huì)發(fā)現(xiàn)參數(shù) 6 被添加到列表的末尾。
② 追加多個(gè)元素(可迭代對(duì)象)

若是我們直接添加多個(gè)元素,Python會(huì)向我們報(bào)錯(cuò)TypeError: append() takes exactly one argument (2 given),也就是說append()方法1次只能添加一個(gè)參數(shù),那么如果我們就想添加多個(gè)元素該如何操作?

用可迭代對(duì)象進(jìn)行添加多個(gè)元素。

Ⅰ.元組
nums = [1,2,3,4,5,6]
nums.append( (7,8) )
print(nums)
'''
    [1, 2, 3, 4, 5, 6, (7, 8)]
'''
Ⅱ.列表
nums = [1,2,3,4,5]
nums.append(["思齊","永遠(yuǎn)18歲"])
print(nums)
'''
    [1, 2, 3, 4, 5, ['思齊', '永遠(yuǎn)18歲']]
'''
Ⅲ.字典
nums = [1,2,3,4,5]
nums.append({"姓名":"思齊","年齡":"永遠(yuǎn)18歲"})
print(nums)
'''
    [1, 2, 3, 4, 5, {'姓名': '思齊', '年齡': '永遠(yuǎn)18歲'}]
'''
③ 優(yōu)點(diǎn)

方法append()讓動(dòng)態(tài)地創(chuàng)建列表易如反掌,例如,你可以先創(chuàng)建一個(gè)空列表,再使用一系列的append()添加元素,因?yàn)槲覀兘?jīng)常要等程序運(yùn)行后,才知道用戶要在程序中存儲(chǔ)哪些數(shù)據(jù)。

為控制用戶,可首先創(chuàng)建一個(gè)空列表,用于存儲(chǔ)用戶將要輸入的值,然后將用戶提供的每一個(gè)新值附加到列表中。

2.extend(): 末尾多元素添加

列表名.extend( [元素1,元素2,...] )

'''
    功能: 可向列表中添加多個(gè)元素,但是在**列表末尾添加**。
         
    參數(shù): 
        ① 可迭代對(duì)象: 將想要添加的元素以 列表 或 元組 形式傳入。
                
    返回值: 添加完成后的列表。
'''
① 參數(shù)為可迭代對(duì)象

一定要注意,extend()的參數(shù)是可迭代對(duì)象。

append()方法一樣,如果我們直接在方法的括號(hào)里添加多個(gè)元素,Python還是會(huì)向我們報(bào)錯(cuò)TypeError: extend() takes exactly one argument (2 given).extend(iterable, /) method of builtins.list instance Extend list by appending elements from the iterable.,不是說append()可以添加多個(gè)元素嗎?這是為什么呢?原因就在于extend() 接收可迭代對(duì)象。

Ⅰ.傳入元組
nums = [1,2,3,4,5]
nums.extend( (9,10) )
print(nums)
'''
    [1, 2, 3, 4, 5, 9, 10]
    向extend()傳入一個(gè)元組,添加成功。
'''
Ⅱ.傳入列表
nums = [1,2,3,4,5]
nums.extend( [7,8] )
print(nums)
'''
    [1, 2, 3, 4, 5, 7, 8]
    向extend()傳入一個(gè)列表,添加成功。
'''
Ⅲ.傳入字典(不可?。?/h6>
nums = [1,2,3,4,5]
nums.extend( {"姓名":"思齊","年齡":"永遠(yuǎn)18歲"} )
print(nums)
'''
    [1, 2, 3, 4, 5, '姓名', '年齡']
'''
如果用 + 只是臨時(shí)添加。

向列表傳入一個(gè)字典是不可取的,因?yàn)闀?huì)造成數(shù)據(jù)丟失,從上述結(jié)果可看到,只是把鍵名取出,而鍵值被省略。

3.insert():任意位置添加

insert(索引,值)

'''
    功能: 可向列表任意位置添加元素。
              
    參數(shù): 
        ① 索引:列表中的位置。 
        ② 值:在這個(gè)位置添加什么元素。
    
    返回值: 添加完成后的列表。
'''

insert(index, object, /) method of builtins.list instance.Insert object before index.
① 向列表任意位置添加單個(gè)元素
num = [1,2,3,4,5]
num.insert(0,0)
num
② 向列表任意位置添加多個(gè)元素
num = [1,2,3,4,5]
num.insert(5,[6,7])
num
# outout: [1, 2, 3, 4, 5, [6, 7]]

num.insert(6,[8,9,10])
num
# outout: [1, 2, 3, 4, 5, [6, 7], [8, 9, 10]]
Ⅰ.多個(gè)元素被看作一個(gè)整體

其實(shí),insert()方法添加多個(gè)元素,并不是實(shí)際意義上的添加多個(gè)元素,而是添加的多個(gè)元素被看成一個(gè)整體

六、刪除

我們經(jīng)常需要從列表中刪除一個(gè)或多個(gè)元素。例如:玩家將游戲中的一個(gè)小怪獸消滅后,你很可能要將其從存活的小怪獸列表中刪除;當(dāng)用戶在你創(chuàng)建的web應(yīng)用中注銷其賬戶時(shí),你需要將該用戶從活躍用戶列表中刪除。你可以根據(jù)位置或值來刪除列表中的元素

1.使用del語句刪除元素

如果知道要?jiǎng)h除的元素在列表中的位置,可使用del語句

del 是一個(gè)語句,不是一個(gè)列表的方法,所以不需要在 del 后面加上小括號(hào)()。

del 加列表名,可以刪除整個(gè)列表。

del 加位置索引,可以刪除該位置上的元素。

(1)怎么做?

① 刪除整個(gè)列表
del fruits
② 刪除指定位置上的元素
fruits = ['葡萄','草莓','大鴨梨','菠蘿']
del fruits[1]   # 刪除草莓
③ 連續(xù)刪除
fruits = ['葡萄','草莓','大鴨梨','菠蘿']
del (fruits[1],fruits[2])

# 刪除了草莓、菠蘿,先刪除的是fruits中索引為1的,接著再刪除新列表中索引為2的。

(2)永久性刪除

使用del語句將值從列表中刪除后,你就無法再訪問它了。

2.pop():先查出來在刪掉,在數(shù)據(jù)庫(kù)有用

有時(shí)候,你要將元素從列表中刪除,并接著使用它的值。

例如:你可能需要獲取剛被消滅的小怪獸的x和y坐標(biāo),以便在相應(yīng)的位置顯示爆炸效果;在Web應(yīng)用程序中,你可能要將用戶從活躍成員列表中刪除,并將其加入到非活躍成員列表中。

方法pop()默認(rèn)刪除列表末尾的元素,并讓你能夠接著使用它。該術(shù)語彈出(pop)就源自這樣的類比:列表就像一個(gè)棧,而刪除列表末尾的元素相當(dāng)于彈出棧頂元素。

列表名.pop() 或 列表名.pop( 索引值 )

'''
    功能: 默認(rèn)刪除最后一個(gè)元素,或刪除指定元素。 

    參數(shù): 
        ① 不寫值,默認(rèn)刪除最后一個(gè)。
        ② 索引值: 加上一個(gè)索引值作為參數(shù)的時(shí)候,會(huì)彈出這個(gè)索引值對(duì)應(yīng)的元素。     

    返回值: 刪除完成后的列表。
'''   
pop(index=-1, /) method of builtins.list instance
            Remove and return item at index (default last).
         Raises IndexError if list is empty or index is out of range.
① 默認(rèn)刪除最后一個(gè)
chinas = ['鳳凰','麒麟','玄武','白虎','青龍']
a = china.pop()
print(a)
print(china)
'''
    青龍
    ['鳳凰', '麒麟', '玄武', '白虎']
'''
② 根據(jù)索引值刪除
china.pop(3)
china
# ['鳳凰', '麒麟', '玄武']

3.remove(): 刪除指定元素

使用remove()刪除元素,并不需要知道這個(gè)元素在列表中的具體位置,只需要知道該元素存在于列表中即可。

若要?jiǎng)h除的東西在列表中根本不存在,程序就會(huì)報(bào)錯(cuò)。

remove() 并不能指定刪除某個(gè)位置的元素,這需要用 del 實(shí)現(xiàn)。

列表名.remove( 元素1 )

remove(元素值)
'''
    功能: 刪除指定元素。
              
    參數(shù): 
        ① 列表中存在的元素。
    
    返回值: 刪除完成后的列表。
'''
① 只刪除指定的第一個(gè)

只刪除指定的第一個(gè)值,如果要?jiǎng)h除的值在列表中出現(xiàn)多次,就需要使用循環(huán)來判斷是否刪除了所有這樣的值。

fruits = ['葡萄','菠蘿','草莓','大鴨梨','菠蘿']
fruits.remove('菠蘿')
fruits
# output: ['葡萄', '草莓', '大鴨梨','菠蘿']
② 刪除不存在的元素
python
fruits = ['葡萄','菠蘿','草莓','大鴨梨','菠蘿']
fruits.remove('芒果')
fruits

# ValueError: list.remove(x): x not in list
③ 刪除時(shí)也可接著使用該值

在定義列表后,先將值存儲(chǔ)在變量中,接著,用這個(gè)變量來告訴Python將哪個(gè)值從列表中刪除,最后,在列表中該值被刪除,但它還存儲(chǔ)在變量中。

python
fruits = ['purple','菠蘿','草莓','大鴨梨','菠蘿']
print(fruits)
fruit = fruits[0]
fruits.remove(fruit)
print(fruits)
print("\nA " + fruit.title() + " is too expensive for me.")
'''
    ['purple', '菠蘿', '草莓', '大鴨梨', '菠蘿']
    ['菠蘿', '草莓', '大鴨梨', '菠蘿']

    A Purple is too expensive for me.
'''

4.clear():清空列表中所有元素

列表名.clear()

python
'''
    功能: 清空列表中所有元素。 

    參數(shù): 無。      

    返回值: 空列表。
'''   
① 怎么做?
python
fruit = ['葡萄','草莓','大鴨梨','菠蘿']
fruit.clear()

5.方法的選擇

當(dāng)我們不確定該選擇del語句、pop()、remove()中的哪一個(gè)的時(shí)候,我們可以按照以下一個(gè)簡(jiǎn)單判斷標(biāo)準(zhǔn):若是我們要從列表中刪除一個(gè)元素,且不再以任何方式使用它,就使用del語句;若是我們?cè)趧h除元素之后還想繼續(xù)使用它,就是用pop()或remove()方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容