Python数据结构之列表list用法和原理全解

在上一节中,我们学习了Python字符串的使用和操作,之前还讨论过的python数据结构包括:python集合set的用法以及Python字典(Dictionary)的用法,其中集合set和字典dictionary都是基于哈希表实现的,因此它们都是无序的,但是因为使用了哈希表,所以查找速度比较快,本文讨论的列表list是有序的。
和其它语言一样,列表就像数组一样。列表不必总是同构的,这使得它成为Python中最强大的工具。单个列表可以包含整数、字符串和对象等数据类型。并且,列表是可变的,因此即使在创建之后也可以更改它们。
Python中的列表是有序的,并且有一个明确的计数。列表中的元素根据确定的序列建立索引,列表的索引以0作为第一个索引,列表中的每个元素在列表中都有其特定的位置,允许复制列表中的元素,每个元素都有其独特的位置和确切性。
注意:列表是保存数据序列并对其进行进一步迭代的有用工具。
1、创建一个列表listPython中的列表可以通过将序列放在方括号[]中来创建,与set不同,list不需要内置函数来创建list。
注意:与set不同,list可包含可变元素。

# 创建一个列表 List = [] print("初始空列表: ") print(List)# 使用字符串创建列表 List = ['La Oreja De Van Gogh'] print("\n字符串列表: ") print(List)# 使用多个值创建列表 List = ["La Oreja", "De", "Van Gogh"] print("\n包含多个值的列表: ") print(List[0]) print(List[2])# 创建多维列表(通过在列表中嵌套列表) List = [['La Oreja', 'De'], ['Van Gogh']] print("\n多维列表: ") print(List)

创建具有多个不同或重复元素的列表:一个列表可能包含具有不同位置的重复值,因此可以在创建列表时按顺序传递多个不同或重复的值。
# 使用数字(具有重复的值)创建列表 List = [1, 2, 4, 4, 3, 3, 3, 6, 5] print("\n数字列表: ") print(List)# 使用混合类型的值(包括数字和字符串)创建列表 List = [1, 2, 'La Oreja', 4, 'De', 6, 'Van Gogh'] print("\n使用混合值的列表: ") print(List)

2、添加元素到列表使用append()函数添加元素。可以使用内置的append()函数将元素添加到列表中。通过使用append()函数一次只能向列表中添加一个元素,可以使用循环调用append()函数添加多个元素。还可以使用append函数将元组添加到列表中,因为元组是不可变的。与集合不同,还可以使用append()方法将一个列表添加到现有列表中。
# 创建一个列表 List = [] print("初始空列表: ") print(List)# 添加元素到列表 List.append(1) List.append(2) List.append(4) print("\n添加3个元素后的列表: ") print(List)# 使用迭代循环添加元素到列表 for i in range(1, 4): List.append(i) print("\n添加元素后的列表: ") print(List)# 向列表中添加元组 List.append((5, 6)) print("\n添加元组后的列表: ") print(List)# 添加列表到一个列表 List2 = ['De', 'Van Gogh'] List.append(List2) print("\n添加列表后的列表: ") print(List)

【Python数据结构之列表list用法和原理全解】使用insert()函数添加元素。append()函数只适用于在列表末尾添加元素,对于在所需位置添加元素,则使用insert()函数。不像append()只接受一个参数,insert()方法需要两个参数(位置、值)。
# 创建一个列表 List = [1, 2, 3, 4] print("初始列表: ") print(List)# 在特定位置添加元素(使用插入方法) List.insert(3, 12) List.insert(0, 'De Oreja') print("\n执行插入操作后的列表: ") print(List)

使用extend()函数添加元素。除了append()和insert()函数之外,还有一个用于添加元素的函数extend(),该方法用于在列表末尾同时添加多个元素。
# 创建一个列表 List = [1, 2, 3, 4] print("初始列表: ") print(List)# 在最后向列表中添加多个元素(使用extend函数) List.extend([8, 'De', 'Van Gogh']) print("\n执行extend操作后的列表: ") print(List)

3、访问列表中的元素访问列表项使用索引号。使用索引操作符[]访问列表中的项,索引必须是整数。嵌套列表使用嵌套索引访问。
# 创建一个有多个值的列表 List = ["La Oreja", "De", "Van Gogh"]# 使用索引号从列表中访问元素 print("访问列表元素") print(List[0]) print(List[2])# 创建多维列表(通过在列表中嵌套列表) List = [['La Oreja', 'De'], ['Van Gogh']]# 使用索引号从多维列表中访问元素 print("访问多维列表中的元素") print(List[0][1]) print(List[1][0])

使用负索引。在Python中,负序列索引表示数组末尾的位置,不必像List[len(List)-3]那样计算偏移量,只写List[-3]就足够了。负索引是指从末尾开始,-1指最后一项,-2指倒数第二项,以此类推。
List = [1, 2, 'La Oreja', 4, 'De', 6, 'Van Gogh']#使用负索引访问元素# 最后一个元素 print(List[-1])# 倒数第三个元素 print(List[-3])

4、删除列表中的元素使用remove()函数。可以使用内置的remove()函数从列表中删除元素,但是如果集合中不存在元素,则会出现错误。该函数的作用是:删除指定的项。
注意:列表中的删除方法只会删除搜索元素的第一个匹配项。
List = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] print(List)# 删除元素 List.remove(5) List.remove(6) print(List)# 迭代删除 for i in range(1, 5): List.remove(i) print(List)

使用pop()函数删除元素。Pop()函数也可以用来从集合中删除和返回一个元素,但是默认情况下它只删除集合的最后一个元素,为了从列表的特定位置删除元素,元素的索引作为参数传递给Pop()方法。
List = [1, 2, 3, 4, 5]List.pop() print(List)List.pop(2) print(List)

5、列表的切片在Python列表中,有多种方法可以打印包含所有元素的整个列表,但是为了打印列表中特定范围的元素,我们使用切片操作。使用冒号(:)对列表执行切片操作。打印元素从开始使用[:索引],打印元素从最终,打印元素从特定的索引到最终使用(索引:),打印元素范围内,使用(开始索引:结束索引),打印整个列表使用切片操作使用[:]。此外,要以相反的顺序打印整个列表,请使用[::-1]。
注意从后端打印列表元素,使用负索引。
List = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'A', 'W', 'E', 'X', 'T', 'A'] print(List)Sliced_List = List[3:8] print(Sliced_List)Sliced_List = List[5:] print(Sliced_List)Sliced_List = List[:] print(Sliced_List)

    推荐阅读