列表是一种线性的数据结构,类似于其他编程语言中的数组
创建列表
在python
中创建列非常简单直接使用函数list()
里面放入一个可迭代对象
就初始化了一个列表或者使用[]
,里面放入一些元素
初始化一个空列表
In [1]: lst = list()
In [2]: lst
Out[2]: []
In [3]: lst2 = []
In [4]: lst
Out[4]: []
In [5]: type(lst)
Out[5]: list
In [7]: lst3 = [1,2,'a']
操作列表
通过下标/索引
来操作列表
list中的索引从0开始,负数表示从后往前,由-1开始,-1也表示最后一个元素
In [7]: lst3 = [1,2,'a']
取出第一个元素
In [8]: lst3[0]
Out[8]: 1
取出最后一个元素
In [9]: lst3[-1]
Out[9]: 'a'
如果下标数取值超出列表的长度,则会报错
In [10]: lst3[-3]
Out[10]: 1
In [11]: lst3[-4]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-11-61b7c59df4ce> in <module>()
----> 1 lst3[-4]
IndexError: list index out of range
In [12]: lst3[4]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-12-96a8c006aa10> in <module>()
----> 1 lst3[4]
IndexError: list index out of range
修改列表中的元素
In [13]: lst3[0] = 10
In [15]: lst3
Out[15]: [10, 2, 'a']
超出列表的长度还是会报错
In [16]: lst3[10] = 10
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-16-2fab583fdf53> in <module>()
----> 1 lst3[10] = 10
IndexError: list assignment index out of range
向列表中添加数据
append()
方法,原地
修改列表,在列表最后追加
元素,返回值为None
In [17]: lst3.append('hello list')
In [19]: lst3
Out[19]: [10, 2, 'a', 'hello list']
insert()
方法,原地修改
列表,在指定的索引对应的元素前面
添加元素,返回值为None
In [20]: lst3.insert(1,'new')
In [21]: lst3
Out[21]: [10, 'new', 2, 'a', 'hello list']
超出列表最大正索引长度时,相当于append
In [22]: lst3.insert(10,'insert')
In [23]: lst3
Out[23]: [10, 'new', 2, 'a', 'hello list', 'insert']
超出列表最大负索引长度时,相当于在最开头插入一个元素
In [24]: lst3.insert(-10,'head')
In [25]: lst3
Out[25]: ['head', 10, 'new', 2, 'a', 'hello list', 'insert']
以上添加元素只能添加一个,如果要把一个列表追加
到现有的list中使用extend
方法
In [26]: lst3.extend([1,2,3,4])
In [27]: lst3
Out[27]: ['head', 10, 'new', 2, 'a', 'hello list', 'insert', 1, 2, 3, 4]
删除列表中的元素
pop()
方法,默认
从列表最后弹出
一个元素,超出索引范围
会报错
In [27]: lst3
Out[27]: ['head', 10, 'new', 2, 'a', 'hello list', 'insert', 1, 2, 3, 4]
In [28]: lst3.pop()
Out[28]: 4
In [29]: lst3.pop(2)
Out[29]: 'new'
In [30]: lst3.pop(100)
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-30-70b6a0f18f10> in <module>()
----> 1 lst3.pop(100)
IndexError: pop index out of range
remove()
方法,删除传入的元素值,如果有重复的元素,从向前往后默认删除第一个,如果删除的值不存在,会抛出ValueError
的错误
In [31]: lst3
Out[31]: ['head', 10, 2, 'a', 'hello list', 'insert', 1, 2, 3]
In [32]: lst3.remove('insert')
In [33]: lst3
Out[33]: ['head', 10, 2, 'a', 'hello list', 1, 2, 3]
In [34]: lst3.remove(2)
In [35]: lst3
Out[35]: ['head', 10, 'a', 'hello list', 1, 2, 3]
In [37]: lst3.remove(20)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-37-304e2f23f401> in <module>()
----> 1 lst3.remove(20)
ValueError: list.remove(x): x not in list
clear()
方法清除列表中所有的元素,变成一个空列表
查找/统计元素
index()
方法返回value对应的索引,可以给定一个索引范围来查找,有重复的元素返回第一个元素
In [40]: lst3.index('hello list')
Out[40]: 3
In [41]: lst3.index('hello list',4)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-41-db5d1fa44a57> in <module>()
----> 1 lst3.index('hello list',4)
ValueError: 'hello list' is not in list
In [42]: lst3.index('hello list',2,4)
Out[42]: 3
In [43]: lst3
Out[43]: ['head', 10, 'a', 'hello list', 1, 2, 3]
In [44]: lst3.append('a')
In [45]: lst3
Out[45]: ['head', 10, 'a', 'hello list', 1, 2, 3, 'a']
In [46]: lst3.index('a')
Out[46]: 2
In [47]: lst3.index('a',4)
Out[47]: 7
count()
方法统计列表中的某个元素的个数
In [45]: lst3
Out[45]: ['head', 10, 'a', 'hello list', 1, 2, 3, 'a']
In [48]: lst3.count(2)
Out[48]: 1
In [49]: lst3.count('a')
Out[49]: 2
len()
内置方法, 可以返回列表的长度
In [50]: len(lst3)
Out[50]: 8
修改列表
sort()
原地修改列表,对列表排序,如果列表中有字符串和数字,不能排序,纯字符按ASCII码的顺序排序
In [45]: lst3
Out[45]: ['head', 10, 'a', 'hello list', 1, 2, 3, 'a']
In [51]: lst3.sort()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-51-66fcd4f5d9f8> in <module>()
----> 1 lst3.sort()
TypeError: unorderable types: int() < str()
In [52]: lst2 = ['a', 'b', 'c', 'd']
In [53]: lst2.sort()
In [54]: lst2
Out[54]: ['a', 'b', 'c', 'd']
In [55]: lst2.sort(reverse=True)
In [56]: lst2
Out[56]: ['d', 'c', 'b', 'a']
reverse()
对列表进行逆序
In [45]: lst3
Out[45]: ['head', 10, 'a', 'hello list', 1, 2, 3, 'a']
In [57]: lst3.reverse()
In [58]: lst3
Out[58]: ['a', 3, 2, 1, 'hello list', 'a', 10, 'head']
其他方法
copy()
copy一个列表,是浅拷贝
In [59]: lst = lst3.copy()
In [60]: lst
Out[60]: ['a', 3, 2, 1, 'hello list', 'a', 10, 'head']