列表
list 在 python 中具有非常強大的功能
定義
在python中,用方括號表示一個list:[]
在方括號里面,可以是 int,也可以是 str類型的數據,甚至也可以是Flase/True這樣的布爾值
- 列表可以無限大,就是說list里面可以容納的元素數量無限,當然這是在硬件設備理想的情況下。
在 java 中有一個跟 list 相似的數據類型-數組,但是兩者之間還是有差別的。
在 java 中,數組的元素必須是基本數據類型中某一個,也就是相同數據類型,要么全是int類型,要么全是char類型等。不能一個數組中既有int類型又有char類型。這是因為java中的數組需要提前聲明,聲明的時候就確定了里面的類型。但是list中的元素數據類型確實任意的,可以是int、str、list,dict等。
- 列表、元組和字符串都是序列,序列的兩個主要特點是索引操作符和切片操作符。
- 索引操作符讓我們可以從序列中抓取一個特定項目
- 切片操作符讓我們能夠獲取序列的一個切片,即一部分序列
索引和切片
在字符串中,索引號是以字符為單位確定的;而在list中,是以元素為單位
>>> a = 'hello.world'
>>> a[2]
'l'
>>> b = ['alpha','bete','gamma']
>>> type(b)
<type 'list'>
>>> b[2]
'gamma'
>>> b[:2] #跟str中的類似,切片的范圍是:包含開始位置,到結束位置之前
['alpha', 'bete'] #不包含結束位置
>>> b[:2][1] #可以進行二次切片
'bete'
list和str兩種類型的數據,有共同的地方,它們都屬於序列(都是一些對象按照某個次序排列起來,這就是序列的最大特征),因此,就有很多類似的地方。如剛才演示的索引和切片,是非常一致的。
>>> a.index('h')
0
>>> b.index('bete')
1
如果從右邊開始編號,右邊第一個可以編號為-1,然后向左依次是:-2,-3,...,依次類推下來。這對字符串、列表等各種序列類型都是用。
>>> a[-1]
'd'
>>> b[-2]
'bete'
反轉
這個功能在編程中經常會用到。
方法一
>>> b = ['alpha','bete','gamma']
>>> b[::-1]
['gamma', 'bete', 'alpha']
>>> b
['alpha', 'bete', 'gamma']
上述不管是str還是lst反轉之后,再看原來的值,沒有改變。這就說明,這里的反轉,不是在“原地”把原來的值倒過來,而是新生成了一個值,那個值跟原來的值相比,是倒過來了。
方法二
使用 reversed() 函數
>>> b
['alpha', 'bete', 'gamma']
>>> reversed(b)
<listreverseiterator object at 0x059DC170>
>>> list(reversed(b))
['gamma', 'bete', 'alpha']
它返回一個可以迭代的對象
list基本操作
- len() 查看list中的元素個數
>>> b
['alpha', 'bete', 'gamma']
>>> len(b)
3
- + 連接兩個列表
>>> b
['alpha', 'bete', 'gamma']
>>> len(b)
3
>>> c = ['apple','orange','banana']
>>> b + c
['alpha', 'bete', 'gamma', 'apple', 'orange', 'banana']
- * 重復元素
>>> b*2
['alpha', 'bete', 'gamma', 'alpha', 'bete', 'gamma']
- count 計算元素在列表中出現的次數
>>> b
['alpha', 'bete', 'gamma', 'delta', 'epsilon']
>>> b.count('a')
0
>>> b.count('alpha')
1
- in 成員運算符
>>> 'apple' in c
True
>>> 'apple' not in c
False
- max()、min() 用法和str中的一樣,需要注意的是如果元素不是int類型,都是按照字符在ascii編碼中所對應的數字進行比較的。
>>> max(b)
'gamma'
>>> min(b)
'alpha'
- append 將新的元素x追加到list的尾部。
>>> b
['alpha', 'bete', 'gamma']
>>> b.append('delta')
>>> b
['alpha', 'bete', 'gamma', 'delta']
>>> id(b)
94144512
>>> b.append('epsilon')
>>> b
['alpha', 'bete', 'gamma', 'delta', 'epsilon']
>>> id(b)
94144512
從上面可以看出,生成一個新的列表后,列表的地址沒有發生變化,因此,可以說明
列表是可以修改的。這種修改,不是復制一個新的,而是在原地進行修改。
- insert 將元素插入到列表中,不是尾部
>>> b
['alpha', 'bete', 'gamma', 'delta', 'epsilon']
>>> b.insert(0,'zaeta')
>>> b
['zaeta', 'alpha', 'bete', 'gamma', 'delta', 'epsilon']
>>>
-
list中的元素,不僅能增加,還能被刪除。刪除list元素的方法有兩個,它們分別是:
- pop 刪除最后一個元素並返回這個元素
>>> b ['zaeta', 'alpha', 'bete', 'gamma', 'delta', 'epsilon'] >>> b.pop() 'epsilon' >>> b ['zaeta', 'alpha', 'bete', 'gamma', 'delta']
- remove 移除指定元素,沒有返回值
>>> b ['zaeta', 'alpha', 'bete', 'gamma', 'delta'] >>> b.remove('delta') >>> b ['zaeta', 'alpha', 'bete', 'gamma']