内置数据结构-列表

列表是一种线性的数据结构,类似于其他编程语言中的数组

创建列表

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']
    原文作者:loveroot
    原文地址: https://www.jianshu.com/p/f3c2b125c88c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞