列表(List)

说明

在Python中,列表是一种有序、可变的数据类型,用于存储多个元素。

列表使用方括号[]来表示,其中的元素可以是任意类型,并且可以根据需要进行增删改查。

常用的操作就是创建、元素增删改查、复制、排序

其特点包括:

  1. 有序性:列表中的元素按照其在列表中的位置进行存储,保持了元素的顺序(有下标,从0开始,根据下标访问,速度快)。

  2. 可变性:列表是可变的,也就是说可以对列表中的元素进行修改、添加和删除操作。

  3. 元素类型多样性:列表可以包含任意类型的元素,例如整数、浮点数、字符串、布尔值等。

  4. 支持索引和切片:可以使用索引访问列表中的元素,还可以使用切片获取列表的子集。

  5. 动态性:列表的长度可以根据需要进行动态调整,可以随时添加或删除元素。

  6. 可嵌套性:列表中的元素可以是其他列表(嵌套列表),从而实现更复杂的数据结构。

  7. 可迭代性:列表是可迭代的,可以通过循环遍历列表中的每个元素。

  8. 重复性:列表允许存在相同的元素,即使它们位于不同的位置。

总的来说,Python列表是一种灵活、多功能的数据结构,适用于存储和处理各种类型的数据。列表的特点使得它成为Python编程中常用的数据容器之一。

 

常用语法及示例

复制代码
 1 '''
 2 说明
 3 在Python中,列表是一种有序、可变的数据类型,用于存储多个元素。
 4 
 5 列表使用方括号[]来表示,其中的元素可以是任意类型,并且可以根据需要进行增删改查。
 6 
 7 其特点包括:
 8 
 9     1. 有序性:列表中的元素按照其在列表中的位置进行存储,保持了元素的顺序(有下标,从0开始,根据下标访问,速度快)。
10 
11     2. 可变性:列表是可变的,也就是说可以对列表中的元素进行修改、添加和删除操作。
12 
13     3. 元素类型多样性:列表可以包含任意类型的元素,例如整数、浮点数、字符串、布尔值等。
14 
15     4. 支持索引和切片:可以使用索引访问列表中的元素,还可以使用切片获取列表的子集。
16 
17     5. 动态性:列表的长度可以根据需要进行动态调整,可以随时添加或删除元素。
18 
19     6. 可嵌套性:列表中的元素可以是其他列表(嵌套列表),从而实现更复杂的数据结构。
20 
21     7. 可迭代性:列表是可迭代的,可以通过循环遍历列表中的每个元素。
22 
23     8. 重复性:列表允许存在相同的元素,即使它们位于不同的位置。
24 
25 总的来说,Python列表是一种灵活、多功能的数据结构,适用于存储和处理各种类型的数据。列表的特点使得它成为Python编程中常用的数据容器之一。
26 '''
27 
28 # 1. 创建一个空列表
29 my_list = []
30 
31 # 2. 创建一个有初始元素的列表: 其元素可以是任意类型哦,且可重复
32 my_list = [1, 2, '3', 4, 5, False]
33 
34 # 3. 根据下标访问列表中的元素(记录列表是有序的,可通过索引访问的)
35 element_01 = my_list[0]
36 element_03 = my_list[2]
37 print(f"列表中第1个元素:{element_01},第3个元素:{element_03}")  # 输出: 列表中第1个元素:1,第3个元素:3
38 
39 # 4 . 修改列表中的元素
40 my_list[0] = 666  # 把列表的第1个元素,设置为666
41 
42 # 5. 列表的切片操作(获取部分元素),生成一个新的列表,原列表不变。切片用法与字符串一致
43 new_list = my_list[1:4]
44 print(new_list, my_list)  # [2, '3', 4] [666, 2, '3', 4, 5, False]
45 print(type(new_list))  # <class 'list'>
46 
47 new_list = my_list[::-1]
48 print(new_list)  # [False, 5, 4, '3', 2, 666]
49 
50 print(my_list[:3])  # [666, 2, '3'],包括start,不包含end哦
51 print(my_list[2:])  # ['3', 4, 5, False]
52 
53 # 6. 追加元素:在末尾追加
54 # 6.1 追加1个元素,这个元素也可以是列表,这样就是列表嵌套了
55 my_list.append(88)
56 print(my_list)  # [666, 2, '3', 4, 5, False, 88]
57 
58 # 6.2 在末尾追加一个可迭代对象(如列表、元组、字符串等)
59 # another_list = [4, 5, 6]
60 # my_list.extend(another_list)
61 # print(my_list)  # Output: [666, 2, '3', 4, 5, False, 88, 4, 5, 6]
62 #
63 # my_list.extend('Allen')
64 # print(my_list)  # Output: [666, '3', 4, 5, False, 88, 4, 5, 6, 'A', 'l', 'l', 'e', 'n']
65 
66 # 7. 在指定位置插入元素,原位置的元素往后移动,就是数据搬迁,影响性能哦
67 my_list.insert(2, 222)
68 print(my_list)  # [666, 2, 222, '3', 4, 5, False, 88]
69 
70 # 8. 删除元素: 根据索引、元素删除(first)、删除整个列表、删除最后1个元素(根据下标删除)、清空列表
71 del my_list[1]  # 根据索引下标删除即删除数字2,第3个及其后面元素往前移位
72 print(my_list)  # [666, 222, '3', 4, 5, False, 88]
73 
74 my_list.remove(222)  # 删除1个元素,从头开始,找到就删除,只删除第1个
75 print(my_list)  # [666, '3', 4, 5, False, 88]
76 
77 # del my_list  # 删除列表,其实del想删谁,就在其后加一下即可
78 
79 # pop():删除指定下标的数据(默认为最后⼀个),并返回该数据。
80 # deleted_element = my_list.pop()  # 88
81 # print(deleted_element)  # 88
82 
83 # 清空列表 clear()
84 # my_list.clear()
85 # print(my_list)  # []
86 
87 # 9. 获取列表的长度即元素个数
88 print(len(my_list))  # 6
89 
90 # 10. 查找:语法 index(数据, 开始位置下标, 结束位置下标),返回元素的下标
91 print(my_list.index('3'))  # 1
92 # 可接口in关键字先判断是否在列表中,然后再获取其下标
93 # print(my_list.index('33'))  # 找不到,报错:ValueError: '33' is not in list
94 
95 # 11. 计算元素在列表中的个数: count()
96 print(my_list.count('3'))  # 1
复制代码

 

最佳实践

复制代码
 1 '''
 2 列表的最佳实践:
 3     1. 使用列表推导式(List Comprehension)来简化列表创建过程
 4     2. 使用enumerate()函数在循环中同时获取索引和值
 5     3. 使用in关键字快速检查元素是否在列表中
 6     4. 使用list()函数将其他可迭代对象(如字符串、元组等)转换为列表
 7 
 8 坑:
 9 1. 不要修改正在进行循环的列表(尤其在多线程环境下),可能会导致意外结果。
10 
11 '''
12 
13 # 1. 使用列表推导式(List Comprehension)来简化列表创建过程
14 my_list = [x for x in range(10)]  # 创建一个包含0到9的列表
15 
16 # 2. 使用enumerate()函数在循环中同时获取索引和值
17 my_list = ['a', 'b', 'c']
18 for index, value in enumerate(my_list):
19     print(index, value)
20 
21 # 3. 使用in 或not in 关键字快速检查元素是否在列表中
22 my_list = ['apple', 'banana', 'orange']
23 if 'apple' in my_list:
24     print("Apple is in the list.")
25 
26 # 4. 使用list()函数将其他可迭代对象(如字符串、元组等)转换为列表
27 my_string = "Hello"
28 my_list = list(my_string)
29 print(my_list)  # Output: ['H', 'e', 'l', 'l', 'o']
30 
31 # 5. 逆置:reverse() 或[::-1]
32 # new_list = my_list.reverse()
33 # print(new_list, my_list)  # None ['o', 'l', 'l', 'e', 'H'],这样会改变原列表
34 
35 # 6. 排序:sort( key=None, reverse=False)  改变原列表
36 # reverse表示排序规则,reverse = True 降序, reverse = False 升序(默认)
37 sort_list =  [1, 3, 2, 4]
38 new_list = sort_list.sort()
39 print(new_list, sort_list)  # None [1, 2, 3, 4]  ,改变原列表
40 
41 # my_list = ['C', 'a', 'B']
42 # my_list.sort(key=str.lower)
43 # print(my_list)  # Output: ['a', 'B', 'C']
44 
45 # 7. copy方法即复制,浅拷贝
46 my_list = [1, 2, 3]
47 new_list = my_list.copy()
48 
49 # 深拷贝使用copy模块
50 import copy
51 
52 my_list2 = [[1, 2], [3, 4]]
53 new_list = copy.deepcopy(my_list2)
54 
55 
56 
57 # 8. 循环
58 i = 0
59 while i < len(my_list):
60     print(my_list[i])
61 
62 # for-each
63 for element in my_list:
64     print(element)
65 
66 # 使用索引和range()函数来遍历列表,并在循环中访问每个元素
67 for i in range(len(my_list)):
68     print(my_list[i])
69 
70 # 如果需要同时访问列表中的索引和对应的元素,可以使用enumerate()函数
71 for index, item in enumerate(my_list):
72     print(index, item)
73 
74 # ----------------------------*** 坑 ** ------------------
75 # 1. 不要修改正在进行循环的列表,可能会导致意外结果
76 for item in my_list:
77     my_list.remove(item)  # 错误:不要修改正在进行循环的列表
78 
79 # 2. 注意使用切片时的边界条件,以避免越界错误。
80 my_list = [1, 2, 3, 4, 5]
81 print(my_list[5])  # 错误:索引超出范围 IndexError: list index out of range
82 
83 # 3. 当比较两个列表是否相等时,要使用==运算符而不是is运算符
84 list1 = [1, 2, 3]
85 list2 = [1, 2, 3]
86 if list1 == list2:  # True:比较值相等
87     print("Lists are equal.")
88 
89 # 4. 不要滥用列表方法,如append()和extend()。在大量数据操作时,这些方法可能会导致性能下降
90 my_list = []
91 for i in range(1000000):
92     my_list.append(i)  # 可能导致性能下降
复制代码

 

posted @   Allen_Hao  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示