# 每天學點Python之list
Python中的列表對參數的類型沒有要求,也就是說同一個列表可以包含多種不同類型的對象。
### 列表的創建
創建一個空的鏈表有兩種方法:
~~~
l = []
l = list()
~~~
而創建一個包含元素的列表同樣有兩種方法,下面操作結果相同:
~~~
l = ["a", "b", "c"]
l = list("abc")
~~~
需要注意的是,list方法最多只能有一個參數,也就是說不能將元素依次當做參數傳入。它只接受可迭代的對象作為其參數。
Python中對元素的編號也是從0開始的,比較方便的是Python支持便利地獲取尾部的元素,如最后一個元素的編號可以用-1表示,可以理解為負數i會自動轉化為length+i:
~~~
>>> a=[1,2,3,4,5]
>>> print(a[-1])
5
~~~
### 列表的截取
Python支持快速地獲取連續的子列表操作list[a:b],截取a到b的部分作為新的列表。需要注意的是a的位置是包含的,而b位置的元素是不包含在內的。如果a省略,則從頭開始,如果b省略,則一直包含到末尾:
~~~
>>> a
[1, 2, 3, 4, 5]
>>> a[1:3]
[2, 3]
>>> a[:3]
[1, 2, 3]
>>> a[3:]
[4, 5]
>>> a[:-1]
[1, 2, 3, 4]
>>> a[2:1]
[]
~~~
### 列表項的增加
- Python支持兩個列表用+號操作表示將第二個列表中的元素加入第一個列表
- list.append(x)表示將元素加入列表中。list.insert(n,x)表示在位置n處插入一個元素x
- list.extend(iterable)將迭代器對象中的每個對象加入列表
~~~
>>> a=[1,2,3]
>>> a+[4,5]
[1, 2, 3, 4, 5]
>>> a.append("abc")
>>> a
[1, 2, 3, 'abc']
>>> a.extend("abc")
>>> a
[1, 2, 3, 'abc', 'a', 'b', 'c']
>>> a.insert(0,0)
>>> a
[0, 1, 2, 3, 'abc', 'a', 'b', 'c']
~~~
### 列表的查找
- list.count(x):返回元素x的數目
- list.index(x[,start,end]):返回元素x出現的下標,可以規定起始位置,如果有多個,只返回第一個的下標
- in:判斷元素是否在列表中
~~~
>>> a=[1,2,3,2,1]
>>> a.count(1)
2
>>> a.index(1)
0
>>> a.index(1,2)
4
>>> 3 in a
True
~~~
### 列表的刪除
- list.remove(x):刪除一個元素,如果有多個,只刪除第一個
- list.pop([n]):默認刪除最后一個元素,如果有參數,則刪除倒數n+1的元素
- del list[index]:刪除一個元素
~~~
>>> a
[1, 2, 3, 2, 1]
>>> a.remove(1)
>>> a
[2, 3, 2, 1]
>>> a.pop(1)
3
>>> a
[2, 2, 1]
>>> del a[2]
>>> a
[2, 2]
~~~