Python 基礎(chǔ)教程

Python 流程控制

Python 函數(shù)

Python 數(shù)據(jù)類型

Python 文件操作

Python 對象和類

Python 日期和時(shí)間

Python 高級知識

Python 參考手冊

Python 列表(List)

在本文中,我們將學(xué)習(xí)有關(guān)Python列表的所有內(nèi)容;如何創(chuàng)建它們、對列表進(jìn)行切片、添加或刪除其中的元素等等。

Python提供了一系列通常稱為序列的復(fù)合數(shù)據(jù)類型。List是Python中使用最頻繁且用途最廣泛的數(shù)據(jù)類型之一。

如何建立列表(List)?

在Python編程中,通過將所有項(xiàng)目(元素)放在方括號[]中并用逗號分隔來創(chuàng)建列表。

它可以具有任意數(shù)量的項(xiàng)目,并且它們可以具有不同的類型(整數(shù),浮點(diǎn)數(shù),字符串等)。

# 空 list
my_list = []

# 整數(shù)list
my_list = [1, 2, 3]

# 具有混合數(shù)據(jù)類型的列表
my_list = [1, "Hello", 3.4]

同樣,一個(gè)列表甚至可以將另一個(gè)列表作為項(xiàng)目。這稱為嵌套列表。

# 嵌套 list
my_list = ["mouse", [8, 4, 6], ['a']]

如何訪問列表中的元素?

我們可以通過多種方式訪問列表的元素。

列表索引

我們可以使用索引運(yùn)算符[]來訪問列表中的項(xiàng)目。索引從0開始。因此,包含5個(gè)元素的列表的索引從0到4。

嘗試訪問其他元素,否則將引發(fā)IndexError。索引必須是整數(shù)。我們不能使用float或其他類型,這將導(dǎo)致TypeError。

使用嵌套索引訪問嵌套列表。

my_list = ['p','r','o','b','e']
# 輸出: p
print(my_list[0])

# 輸出: o
print(my_list[2])

# 輸出: e
print(my_list[4])

# 錯(cuò)誤! 僅整數(shù)可用于索引
# my_list[4.0]

# 嵌套列表
n_list = ["Happy", [2,0,1,5]]

# 嵌套索引

# 輸出: a
print(n_list[0][1])    

# 輸出: 5
print(n_list[1][3])

負(fù)索引

Python允許對其序列進(jìn)行負(fù)索引。索引-1表示最后一項(xiàng),-2表示倒數(shù)第二項(xiàng),依此類推。

my_list = ['p','r','o','b','e']

# 輸出: e
print(my_list[-1])

# 輸出: p
print(my_list[-5])

Python列表索引

如何在Python中切片列表?

我們可以使用切片運(yùn)算符(冒號:)訪問列表中的一系列項(xiàng)目。

my_list = ['p','r','o','g','r','a','m','i','z']
# 從第3元素至第5個(gè)元素
print(my_list[2:5])

# 從開始到第4個(gè)元素
print(my_list[:-5])

# 第6個(gè)元素至結(jié)束
print(my_list[5:])

# 元素開始到結(jié)束
print(my_list[:])

通過將索引考慮到如下所示的元素之間,切片可以得到最佳的可視化效果。如果我們想要訪問一個(gè)范圍,我們需要兩個(gè)下標(biāo)來從列表中分割那部分。

從Python列表中進(jìn)行元素切片

如何更改或添加元素到列表?

List是可變的,也就是說,它們的元素可以更改,而不像stringtuple。

我們可以使用賦值運(yùn)算符(=)更改一個(gè)項(xiàng)目或一系列項(xiàng)目。

# 值列表
odd = [2, 4, 6, 8]

# 改變第一個(gè)元素    
odd[0] = 1            

# 輸出: [1, 4, 6, 8]
print(odd)

# 改變第2到第4項(xiàng)
odd[1:4] = [3, 5, 7]  

# 輸出: [1, 3, 5, 7]
print(odd)

我們可以使用append()方法將一個(gè)項(xiàng)目添加到列表中,或者使用extend()方法將多個(gè)項(xiàng)目添加到列表中。

odd = [1, 3, 5]

odd.append(7)

# 輸出: [1, 3, 5, 7]
print(odd)

odd.extend([9, 11, 13])

# 輸出: [1, 3, 5, 7, 9, 11, 13]
print(odd)

我們還可以使用+運(yùn)算符組合兩個(gè)列表。這也稱為串聯(lián)。

*運(yùn)算符重復(fù)給定次數(shù)的列表。

odd = [1, 3, 5]

# 輸出: [1, 3, 5, 9, 7, 5]
print(odd + [9, 7, 5])

#輸出: ["re", "re", "re"]
print(["re"] * 3)

此外,我們可以使用insert()方法在需要的位置插入一個(gè)項(xiàng),或者通過將多個(gè)項(xiàng)壓縮到列表的一個(gè)空切片中來插入多個(gè)項(xiàng)。

odd = [1, 9]
odd.insert(1,3)

# 輸出: [1, 3, 9] 
print(odd)

odd[2:2] = [5, 7]

# 輸出: [1, 3, 5, 7, 9]
print(odd)

如何從列表中刪除或刪除元素?

我們可以使用關(guān)鍵字del從列表中刪除一個(gè)或多個(gè)項(xiàng)。它甚至可以完全刪除列表。

my_list = ['p','r','o','b','l','e','m']

# 刪除一項(xiàng)
del my_list[2]

# 輸出: ['p', 'r', 'b', 'l', 'e', 'm']     
print(my_list)

# 刪除多個(gè)項(xiàng)目
del my_list[1:5]  

# 輸出: ['p', 'm']
print(my_list)

# 刪除所有列表
del my_list       

# Error: List not defined
print(my_list)

我們可以使用remove()方法刪除給定項(xiàng)目,也可以使用pop()方法刪除給定索引處的項(xiàng)目。

如果未提供索引,則pop()方法將刪除并返回最后一項(xiàng)。這有助于我們將列表實(shí)現(xiàn)為堆棧(先進(jìn)先出數(shù)據(jù)結(jié)構(gòu))。

我們還可以使用該clear()方法清空列表。

my_list = ['p','r','o','b','l','e','m']
my_list.remove('p')

# 輸出: ['r', 'o', 'b', 'l', 'e', 'm']
print(my_list)

# 輸出: 'o'
print(my_list.pop(1))

# 輸出: ['r', 'b', 'l', 'e', 'm']
print(my_list)

# 輸出: 'm'
print(my_list.pop())

# 輸出: ['r', 'b', 'l', 'e']
print(my_list)

my_list.clear()

# 輸出: []
print(my_list)

最后,我們還可以通過為元素切片分配一個(gè)空列表來刪除列表中的項(xiàng)目。

>>> my_list = ['p','r','o','b','l','e','m']
>>> my_list[2:3] = []
>>> my_list
['p', 'r', 'b', 'l', 'e', 'm']
>>> my_list[2:5] = []
>>> my_list
['p', 'r', 'm']

Python列表方法

下面列出了Python編程中l(wèi)ist對象可用的方法。

它們以list.method()方式訪問。上面已經(jīng)使用了某些方法。

Python列表方法
append() -將元素添加到列表的末尾
extend() -將列表的所有元素添加到另一個(gè)列表
insert() -在定義的索引處插入一個(gè)項(xiàng)目
remove() -從列表中刪除一個(gè)項(xiàng)目
pop() -刪除并返回給定索引處的元素
clear() -從列表中刪除所有項(xiàng)目
index() -返回第一個(gè)匹配項(xiàng)的索引
count() -返回作為參數(shù)傳遞的項(xiàng)目數(shù)
sort() -以升序?qū)α斜碇械捻?xiàng)目進(jìn)行排序
reverse() -反轉(zhuǎn)列表中項(xiàng)目的順序
copy() -返回列表的淺表副本

Python列表方法的一些示例:

my_list = [3, 8, 1, 6, 0, 8, 4]

# 輸出: 1
print(my_list.index(8))

# 輸出: 2
print(my_list.count(8))

my_list.sort()

# 輸出: [0, 1, 3, 4, 6, 8, 8]
print(my_list)

my_list.reverse()

# 輸出: [8, 8, 6, 4, 3, 1, 0]
print(my_list)

列表理解:創(chuàng)建新列表的優(yōu)雅方式

列表理解是從Python現(xiàn)有列表中創(chuàng)建新列表的一種簡潔明了的方法。

列表理解包含一個(gè)表達(dá)式,后跟方括號內(nèi)的for語句。

這是一個(gè)列出每項(xiàng)增加2的冪的示例。

pow2 = [2 ** x for x in range(10)]

# 輸出: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
print(pow2)

此代碼等效于

pow2 = []
for x in range(10):
   pow2.append(2 ** x)

列表推導(dǎo)可以選擇包含更多for或if語句??蛇xif語句可以過濾出新列表的項(xiàng)目。這里有些示例。

>>> pow2 = [2 ** x for x in range(10) if x > 5]
>>> pow2
[64, 128, 256, 512]
>>> odd = [x for x in range(20) if x % 2 == 1]
>>> odd
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> [x+y for x in ['Python ','C '] for y in ['Language','Programming']]
['Python Language', 'Python Programming', 'C Language', 'C Programming']

Python中的其他列表操作

列表成員資格測試

我們可以使用關(guān)鍵字in來測試一個(gè)項(xiàng)目是否存在于一個(gè)列表中。

my_list = ['p','r','o','b','l','e','m']

# 輸出: True
print('p' in my_list)

# 輸出: False
print('a' in my_list)

# 輸出: True
print('c' not in my_list)

遍歷列表

使用for循環(huán),我們可以遍歷列表中的每個(gè)項(xiàng)目。

for fruit in ['apple','banana','mango']:
    print("I like",fruit)
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清