零基礎學習 Python 之列表

列表定義

以前的文章裏咱們已經講過了數字和字符串,它們是兩種很基本的對象,今天要學的 list 也是一種對象,它在 Python 中具備很是強大的功能。java

在 Python 中,列表用一對方括號 -- [] 表示,在方括號裏你能夠數字,字符串也能夠是其餘對象,甚至能夠是多種不一樣的對象。除此之外,列表中元素的個數能夠無限大,固然這是理想狀態,咱們總仍是要看硬件設備的臉色行事。python

>>> a = []
>>> a
[]
>>> b = ['1',2,'abcd']
>>> b
['1', 2, 'abcd']
>>> c = [1,'asd',[1,2,3]]
>>> c
[1, 'asd', [1, 2, 3]]
複製代碼

索引和切片

還記得什麼是索引和切片嗎?若是忘記了,請回頭去看這篇文章 -- 零基礎學習 Python 之字符串 。c++

列表和字符串同樣,都是序列,列表裏的元素也是有順序的,因此也是有索引和切片的,看看下面的例子就明白了。c#

>>> a = [1,'2','rocky']
>>> a[0]
1
>>> a[1]
'2'
>>> a[:3]
[1, '2', 'rocky']
>>> a[1:3]
['2', 'rocky']
>>> a[2][0:3]
'roc'
複製代碼

由上面的例子咱們能夠看出來,其實列表裏的索引和序列與字符串裏的是同樣的,咱們徹底能夠把以前在字符串中的理解照搬過來,因此列表也能夠從右向左編號,依次是 -1,-2,-3...可是若是要是切片的話,這裏要注意了,請看下面的例子:bash

>>> str = ['abc','bcd','123']
>>> str[-3:-1]
['abc', 'bcd']
>>> str[-1:-3]
[]
複製代碼

看明白了嗎?序列都是從左向右排,無論你的下標是正的仍是負的都是這個規律。app

固然了序列裏還能夠跳步,其實它的完整的寫法是 list[start:end:step],默認step = 1 。函數

>>> str = [1,2,3,4,5,6,7,8]
>>> str[::2]
[1, 3, 5, 7]
複製代碼

在這裏再多補充一點, step 也是能夠等於負數的,str[::-1] 表示的是從列表的右邊看這個列表,而後按照 step = 1 去列表中的元素,固然 step 還能夠等於 -2,-3,具體是多少看到時候看心情。學習

>>> str = [1,2,3,4,5,6,7,8]
>>> str[::-1]
[8, 7, 6, 5, 4, 3, 2, 1]
>>> str[::-2]
[8, 6, 4, 2]
複製代碼

列表操做

列表是序列,但凡是序列都有基本的幾種操做,好比在字符串的時候咱們就講過它的幾種操做,列表的基本操做和字符串的差很少,在這基礎上,列表還有其獨特的操做,對於基本操做,好比鏈接操做等我在這裏就不講了,忘記的能夠求看前面的文章,我在這裏只是說一下列表獨特的操做。spa

列表與字符串一個很大的不一樣是,字符串不可修改,可是列表能夠修改。code

>>> str = ['python','c++','java']
>>> str[0] = 'c#'
>>> str
['c#', 'c++', 'java']
>>> name = 'rocky'
>>> name[0] = 'R'
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
複製代碼

其次,除了能夠修改元素之外,列表還能夠繼續給本身添加元素,可是不是說列表隨即可以給本身加戲,必需要用 append() 方法向列表中追加元素,追加到末尾。

>>> str = ['python','c++','java']
>>> str[3] = 'c#'
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> str.append('c#')
>>> str
['python', 'c++', 'java', 'c#']
複製代碼

經常使用列表函數

做爲 Python 中出了名的苦哈哈,它必然有不少的函數去實現功能,感興趣的朋友們能夠用 dir(list) 查看,我在這裏主要說一下那些常常用到的。

1.append:這個其實咱們在昨天的文章 ( 零基礎學習 Python 之列表 ( 一 ) )中說過,它執行的結果就是將某個元素加入到一個一直列表的最右邊。

>>> str = [1,2,3,4,5]
>>> str.append(6)
>>> str
[1, 2, 3, 4, 5, 6]
複製代碼

2.extend:官方的說法是從可迭代的對象那裏獲取元素,將它們追加到已知的列表中,從而達到擴充的目的,其實就是可以將兩個列表合併。

>>> str = [1,2,3,4,5]
>>> str1 = ['abc','def']
>>> str.extend(str1)
>>> str
[1, 2, 3, 4, 5, 'abc', 'def']
複製代碼

3.count:這是一個能夠幫咱們搞清楚列表中的元素重複出現次數的方法。

>>> a = [1,2,3,4,5,1,2,3]
>>> a.count(1)
2
>>> a.append('a')
>>> a.append('a')
>>> a
[1, 2, 3, 4, 5, 1, 2, 3, 'a', 'a']
>>> a.count('a')
2
>>> a.count('b')
0
複製代碼

4.index:該函數可以查到你想查的函數在列表中第一次出現的位置,比起以前的文章咱們說的索引,這個纔是真真正正的索引。

>>> a = [1,2,3,4,'abc','def']
>>> a.index(2)
1
複製代碼

5.insert:這個厲害了,以前在 1 和 2 中咱們說的 append 和 extend 只是能在列表的最右添加元素,而 insert 能夠在列表的任意位置增長一個元素。

>>> a = [1,2,3,4,'abc','def']
>>> a.insert(0,'rocky')
>>> a
['rocky', 1, 2, 3, 4, 'abc', 'def']
複製代碼

6.remove & pop:列表中的元素不光可以增長元素,還能夠刪除元素, remove() 和 pop() 就是列表用來刪除元素的函數。romove() 函數刪除元素首先這個元素必需要存在,其次它是在原列表上進行刪除,當列表中有重複元素的時候,只刪除第 1 個。

>>> a = [1,2,3,4,1]
>>> a.remove(1)
>>> a
[2, 3, 4, 1]
>>> a.remove('a')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
複製代碼

pop() 函數若是填寫刪除元素的索引的話,那麼就是刪除該元素,若是沒有制定刪除元素的索引,則刪除列表的最後一個元素,而且 pop() 函數有返回值,返回的就是刪除的那個元素。

>>> a = [1,2,3,4,1]
>>> a.pop(1)
2
>>> a.pop()
1
>>> a
[1, 3, 4]
複製代碼

7.reverse:這個函數很簡單,就是直接把列表的元素順序反過來。

>>> a = [1,2,3,4,1]
>>> a.reverse()
>>> a
[1, 4, 3, 2, 1]
複製代碼

8.sort:這個函數是對列表進行排序,默認是遞增排序,經過改變默認參數 reverse 的值能夠實現遞減排序。

>>> a = ['c','d','a','k']
>>> a.sort()
>>> a
['a', 'c', 'd', 'k']
>>> a.sort(reverse = True)
>>> a
['k', 'd', 'c', 'a']
複製代碼

比較列表 & 字符串

列表和字符串這兩種對象類型有不少類似的地方,也有很大的區別,在這裏簡單比較一下,也算是對前面所學的一個複習。

相同點:

1.二者都是序列類型,均可以從左向右(從左向右),依次用 0,1,2...(-1,-2,-3...)表示,經過這樣的方式創建索引,一樣能夠用切片的方法獲得 一個或多個元素。

2.對於序列的基本操做來講,兩者都適用,好比鏈接操做等,還有像 len() 這一類的函數也都是適用的。

不一樣點:

1.字符串和列表的最大區別就是:列表的可變的,可是字符串是不可變的。咱們在上面講到的列表函數,諸如 append(),insert(),pop() 等對字符串來講都是不適用的。

2.元素的包裹性,這是我本身想的一個詞,可能不太貼切。字符串裏的每一個元素都只是字符,而列表裏的元素能夠是其它任何的諸如數字,字符串,列表等對象類型。

到這裏,列表差很少就寫完了,列表雖然是苦哈哈,但先讓它作這些事情把,顯得咱們比較仁義點。。

寫在最後

更多內容,歡迎關注公衆號「Python空間」,期待和你的交流。

在這裏插入圖片描述
相關文章
相關標籤/搜索