溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python的列表list

發(fā)布時(shí)間:2020-07-10 09:19:09 來(lái)源:網(wǎng)絡(luò) 閱讀:226 作者:CallousMaster 欄目:編程語(yǔ)言

list


  • Python內(nèi)置的一種數(shù)據(jù)類(lèi)型是列表:list。list是一種有序的集合,可以隨時(shí)添加和刪除其中的元素。

列表使用[]來(lái)表示

比如,列出列出班里所有同學(xué)的名字,就可以用一個(gè)list表示:

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']

變量classmates就是一個(gè)list,用len()函數(shù)可以獲得list元素的個(gè)數(shù):

>>>len(classmates)
3

列表有序的,可以用索引根據(jù)下標(biāo)獲取列表每個(gè)位置的元素,索引從0開(kāi)始:

>>> classmates[0]
'Michael'
>>> classmates[1]
'Bob'
>>> classmates[2]
'Tracy'
>>> classmates[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

當(dāng)索引超出了范圍時(shí),Python會(huì)報(bào)一個(gè)IndexError錯(cuò)誤,所以,要確保索引不要越界,記得最后一個(gè)元素的索引是len(classmates) - 1。
如果要取最后一個(gè)元素,除了計(jì)算索引位置外,還可以用-1做索引,直接獲取最后一個(gè)元素:

>>> classmates[-1]
'Tracy'

以此類(lèi)推,可以獲取倒數(shù)第2個(gè)、倒數(shù)第3個(gè):

>>> classmates[-2]
'Bob'
>>> classmates[-3]
'Michael'
>>> classmates[-4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

當(dāng)然,倒數(shù)第4個(gè)就越界了。

list是一個(gè)可變的有序表,所以,可以往list中追加元素到末尾:

>>> classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']

也可以把元素插入到指定的位置,比如索引號(hào)為1的位置:

>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']

要?jiǎng)h除list末尾的元素,用pop()方法:

>>> classmates.pop()
'Adam'
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']

要?jiǎng)h除指定位置的元素,用pop(i)方法,其中i是索引位置:

>>> classmates.pop(1)
'Jack'
>>> classmates
['Michael', 'Bob', 'Tracy']

也可以使用remove(y)方法,其中y是指定的元素名稱(chēng)

>>> classmates.remove(Bob)
>>> classmates
['Michael', 'Tracy']

要清空列表,可以使用clear()方法

>>> classmates.clear()
>>> classmates
None

要清空某個(gè)變量的內(nèi)存,解除變量對(duì)內(nèi)存的占用可以使用del方法

>>> del classmates[0]
>>> classmates
['Bob', 'Tracy']

要把某個(gè)元素替換成別的元素,可以直接賦值給對(duì)應(yīng)的索引位置:

>>> classmates[1] = 'Sarah'
>>> classmates
['Michael', 'Sarah', 'Tracy']

獲取列表中單類(lèi)元素的個(gè)數(shù),使用count()方法

>>>classmate.count('Bob')
1

sort()排序 可以為我們的列表做一個(gè)簡(jiǎn)單的升序(從小到大)

>>>words=['a','z','e','b']
>>>words.sort()
>>>print(words)
['a','b','e','z']

reverse() 將列表逆序排列

>>>words=['a','z','e','b']
>>>words.reverse()
>>>print(words)
['b','e','z','a']

list里面的元素的數(shù)據(jù)類(lèi)型也可以不同,比如:

>>> L = ['Apple', 123, True]

list元素也可以是另一個(gè)list,比如:

>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4

要注意s只有4個(gè)元素,其中s[2]又是一個(gè)list,如果拆開(kāi)寫(xiě)就更容易理解了:

>>> p = ['asp', 'php']
>>> s = ['python', 'java', p, 'scheme']

要拿到'php'可以寫(xiě)p[1]或者s[2][1],因此s可以看成是一個(gè)二維數(shù)組,類(lèi)似的還有三維、四維……數(shù)組,不過(guò)很少用到。

如果一個(gè)list中一個(gè)元素也沒(méi)有,就是一個(gè)空的list,它的長(zhǎng)度為0:

>>> L = []
>>> len(L)
0

想要從列表中獲取多個(gè)項(xiàng),怎么辦?可以使用list的切片操作。簡(jiǎn)單來(lái)說(shuō):切片操作的作用是獲取列表中一個(gè)區(qū)間范圍的元素,例如想獲取的是下標(biāo)從0~2的元素則是[0:2+1]

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> print(classmates[0:3])
['Michael', 'Bob', 'Tracy']

列表切片的操作還支持設(shè)置步長(zhǎng),默認(rèn)步長(zhǎng)是1。如果步長(zhǎng)為2,則跳過(guò)一個(gè)元素獲取一個(gè)元素。同理,步長(zhǎng)為3,跳過(guò)兩個(gè)元素獲取一個(gè)元素

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> print(classmates[0:3:2])
['Michael', 'Tracy']

如果列表過(guò)長(zhǎng),[0:]可以將整個(gè)列表的值全部獲取

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> print(classmates[0:])
['Michael', 'Bob', 'Tracy']

當(dāng)冒號(hào)右側(cè)的數(shù)值為負(fù)數(shù)時(shí),如-1則不獲取列表的最后一個(gè)元素,-2就是兩個(gè)

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> print(classmates[0:-2])
['Michael']

那么怎么從右往左獲取元素呢?這時(shí)可以將步長(zhǎng)設(shè)置為負(fù)數(shù)如[2::-1]

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> print(classmates[2::-1])
['Tracy','Bob','Michael']

元組


什么是元組
元組被稱(chēng)為只讀列表(即數(shù)據(jù)可以查詢(xún),但不能被修改),使用()來(lái)定義,所以列表的切片操作同樣也適合元組

>>>a=(1,2,3,4)
>>>print(a)
(1, 2, 3, 4)

創(chuàng)建元組時(shí),如果元組中只有一個(gè)元素的情況下,創(chuàng)建元組的方式:(1,)【注意加,】
元組的切片

>>>a=(1,2,3,4)
>>>print(a[0:3])
(1, 2, 3)
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI