文章目录
-
-
- 序言
- [1. 列表的创建](#1. 列表的创建)
- [2. 列表的访问](#2. 列表的访问)
- [3. 列表的更新](#3. 列表的更新)
- [4. 列表的删除](#4. 列表的删除)
- [5. 列表的元素查找](#5. 列表的元素查找)
- [6. 列表的脚本操作符](#6. 列表的脚本操作符)
- [7. 列表的函数/方法](#7. 列表的函数/方法)
- [8. 列表的一些其他操作](#8. 列表的一些其他操作)
-
序言
- 总结字典的常见用法,以备查阅
1. 列表的创建
-
列表是python中最常用的数据类型,其数据项不需要具有相同的类型
-
列表创建方式1:[]创建
pythona = [] # 创建一个空列表 print(a) b = [1, 2, 'abd'] # 创建列表并赋值 print(b) print(b[2]) # 下标访问
-
列表的创建方式2:list()创建
pythona = list() # 创建一个空列表 print(a) a.append(1) # 添加元素 print(a) b = list("abcdef") print(b) # 输出 ['a', 'b', 'c', 'd', 'e', 'f']
-
列表的创建方式3:range辅助创建整数列表
pythonc = list(range(10)) print(c) # 输出 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] d = list(range(0,10,2)) print(d) # 输出 [0, 2, 4, 6, 8] e = list(range(10,0,-1)) print(e) # 输出 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
-
列表创建方式4:推导式生成列表
pythonf = [x*2 for x in range(10)] print(f) # 输出 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] g = [x*2 for x in range(50) if x%8==0] print(g) # 输出 [0, 16, 32, 48, 64, 80, 96]
-
二维列表创建方式1:创建空二维列表
python# 方式1: 创建空二维列表 a = [[] for i in range(5)] print(a) # 输出: [[], [], [], [], []] b = [] for i in range(5): b.append([]) print(b)
-
二维列表创建方式2:直接定义二维列表
pythonlist_name = [[元素11, 元素12, 元素13, 元素14], [元素21, 元素22, 元素23, 元素24], [元素31, 元素32, 元素33, 元素34]] print(list_name) # 输出 一个 3 x 4 的列表
-
二维列表创建方式3:使用嵌套for循环创建二维列表
python# 创建一个 3 x 4 的列表 lis = [] for i in range(3): lis.append([]) for j in range(4): lis[i].append(j) print(lis)
-
二维列表创建方式4:使用推导式生成二维列表
pythonlist_name = [[i for i in range(4)] for j in range(3)] print(list_name) # 3 x 4 列表
2. 列表的访问
-
一维列表的访问
python''' 取元素 ''' list_name[0] # 取第一个元素 list_name[-1] # 取最后一个元素 list_name[:] # 取所有元素 list_name[m : n] # 取[m, n)元素 list_name[m :] # 取m开始到结尾的所有元素 ''' 遍历 ''' for item in list_name: print(item) length = len(list_name) index = 0 while index < length: print(list_name[index]) index += 1
-
二维列表的访问: 注意没法用array数组的方式来读取每一列
python''' 取元素 ''' list_name[row_index][col_index] # 行索引,列索引 ''' 按行读取 ''' for row_item in list_name: print(row_item) # 逐行遍历 ''' 按列读取 ''' for col_index in range(4): columns = [item[col_index] for item in list_name] print(columns) # 输出每一列 # 用array的方式读取每一列失败 print(list_name[:, 0]) # 意图输出所有行第一列失败 ''' 遍历 ''' for row_index in len(list_name): for col_index in len(list_name[0]): print(list_name[row_index][col_index]) for row_item in list_name: for item in row_item: print(item) # 逐行逐列输出
3. 列表的更新
-
直接修改元素值
python1_d_list[0] = 'new_element' 2_d_list[0][1] = 'new_element'
-
使用append新增元素
python1_d_list.append(new_element) 2_d_list.append([new_list])
-
在某处插入元素
python1_d_list.insert(0, 'new') # insert(index,obj)将元素插入到列表的index位置处 # 举例 list_name = ['D', 1, 2, 3, 4] list_name.insert(1, 'E') print(list_name) # 输出 ['D', 'E', 1, 2, 3, 4]
-
在列表末尾添加多个值:注意添加的序列必须是可迭代对象
pythonlist_1 = [1, 2, 3] list_2 = [4, 5, 6] list_1.extend(list_2) print(list_1) # 输出 [1, 2, 3, 4, 5, 6]
4. 列表的删除
-
使用 del 删除元素
pythonmy_list = [1, 2, 3, 4, 5, 6, 7, 8, 9] del my_list[2:5] # 删除[2, 5)之间的元素 print(my_list) # 输出 [1, 2, 6, 7, 8, 9]
-
使用 pop(index = -1) 移除元素:index默认为-1可以修改
python# 例1 list_1 = [1, 2, 3, 4, 1] list_1.pop() print(list_1) # 输出 [1, 2, 3, 4] list_1.pop(0) # 输出 [2, 3, 4] # 例2 my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9] indices_to_remove_index = [2, 4, 6] indices_to_remove_index.sort(reverse=True) # 从后往前删,避免索引错位 [6, 4, 2] for index in indices_to_remove_index: my_list.pop(index) print(my_list) # 输出 [1, 2, 4, 6, 8, 9]
-
使用 remove(obj) 移除列表中第一次出现的 obj 元素
python# 例1 list_1 = [1, 2, 3, 4, 1] list_1.remove(1) print(list_1) # 输出 [2, 3, 4, 1] # 例2 my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9] elements_to_remove = [3, 5, 7] for element in elements_to_remove: my_list.remove(element) print(my_list) # 输出 [1, 2, 4, 6, 8, 9]
-
使用 clear 清空列表
pythonlist_1 = [1,2,3,4,5] list_1.clear() print(list_1) # 输出 []
-
pop()方法和remove()不推荐使用,因为删除元素后列表大小会变,导致列表索引也会改变,容易出错
5. 列表的元素查找
-
使用index()方法:查找列表中元素第一次出现的位置
pythonindex(obj,start = 0 , end = -1) obj: 要查找的元素 start: 查找的起始位置 end: 查找的结束位置(不包含该位置)
python# 遍历查找 # 使用index()方法 list_1 = [1,2,3,4,5] list_1.index(3) # 返回索引 2
6. 列表的脚本操作符
python
[1,2,3]+[4,5,6] -> [1,2,3,4,5,6] # 组合
['Hi!'] * 4 -> ['Hi!', 'Hi!', 'Hi!', 'Hi!'] # 重复
3 in [1,2,3] -> True # 元素是否存在于列表中
7. 列表的函数/方法
-
求列表长度/大小
pythonlen(list) # 一维列表: 元素个数; 二维列表:返回行数
-
比较两个列表的大小
pythoncmp(list1, list2) # 如果是数字,按大小比较 # 如果一方数字,另一方非数字,数字是最小的 # 如果都不是数字,按字母顺序比较 a < b,a > A等 # list1 > list2, 返回1 # list1 < list2, 返回-1 # list1 = list2, 返回0
-
求列表的最大最小元素
pythonmax(list) # 返回最大元素 min(list) # 返回最小元素
-
统计列表中某个元素出现的次数
pythonlist1 = [1,2,3,4,1,2,1,2,1] print(list1.count(1)) # 输出 4,1出现4次
-
对列表元素进行排序: sort默认升序,设置reverse = True则为降序排列
pythonlist1 = [3,5,6,1,2,9] list1.sort() print(list1) # [1, 2, 3, 5, 6, 9] list1.sort(reverse = True) print(list1) # [9, 6, 5, 3, 2, 1]
-
列表元素反转,反向排序: reverse()函数
pythonlist1 = [4,3,1,6,7] list1.reverse() print(list1) # [7, 6, 1, 3, 4]
8. 列表的一些其他操作
-
判断一个元素是否在列表内
python# 1. 遍历查找 # 2. 使用index()函数: 存在则返回第一个匹配元素的索引位置,不存在则抛出异常,所以可以如下写 index = -1 index = list.index(obj) if index != -1: print('obj is found!') # 3. 使用.count()方法:判断某个元素在列表中出现的次数 num = list.count(element)
-
将二维列表转换为一维列表
python# 1. 遍历转换: 两层for循环 list1 = [[1, 2], [3, 4]] new_list = [item for list in list1 for item in list] print(new_list) # 2. list->array->list, array使用flatten方法 import numpy as np list1 = [[1, 1], [2, 2]] list1 = np.array(list1) ans = list1.flatten() ans = ans.tolist()
-
列表作为函数参数
-
可变类型:list ,dict
-
不可变类型:int , string , float ,tuple
-
列表作为函数参数,运行函数会改变原始列表数据,如下
pythona = [1, 2, 'A'] def F(A): A.pop() print(A) # 输出 [1, 2] F(a) print(a) # 输出 [1, 2]
-
如果不希望这种情况发生,可以先拷贝一份,避免破坏原始数据
pythona = [1, 2, 'A'] def F(A): lst_copy = A.copy() # 当列表有多重列表时,需要用deepcopy lst_copy.pop() print(lst_copy) # 输出 [1, 2] F(a) print(a) # 输出 [1, 2, 'A'] 没变
-
【参考文章】
[1]. python列表创建的方式
[2]. 二维列表的遍历
[3]. 二维列表的创建
[4]. 二维列表按行按列访问
[5]. 二维列表不能直接切片
[6]. 二维列表的创建与访问
[7]. 删除列表中多个元素
[8]. 列表元素删除方法比较
[9]. 列表操作详解
[10]. 列表的基本用法
[11]. 列表的基本用法
[12]. 判断元素是否在列表内
[13]. 二维列表转换为一维
[14]. 列表作为函数形参
[15]. 列表作为传参copy
created by shuaixio, 2023.12.02