列表对象自带方法append(element)在列表末尾添加单个元素。remove(value)删除列表中第一个值与参数相同的元素。extend(iterable)将另一个可迭代对象如列表中的元素逐个添加到原列表末尾。sort(keyNone, reverseFalse)对列表进行原地排序默认升序reverseTrue时降序返回值是None。clear()清空列表中的所有元素列表变为空列表[]。copy()创建列表的浅拷贝等价于list[:]返回一个新列表但内部元素仍是原对象的引用。切片操作list[start:end:step]通过索引区间获取子列表遵循左闭右开原则包含start不包含end。多维列表中的切片如list[:2]取前两行row[:2]取每行的前两个元素。全切片[:,:]在 NumPy 数组中使用表示取所有行和所有列纯列表不支持此写法。copy模块拷贝操作copy.copy(obj)浅拷贝。新列表与原列表是不同的对象但内部的子对象如嵌套列表仍共用同一内存地址修改子对象会互相影响。copy.deepcopy(obj)深拷贝。递归复制所有层级的对象新列表与原列表完全独立修改任意元素均不影响原对象。NumPy 库相关函数np.array(list)将 Python 多维列表转换为 NumPy 多维数组。array.shape返回数组各维度的大小元组形式。np.ndim(array)返回数组的维度数例如二维数组返回2。#create list mylist [] print(f原始list内容:{mylist}) #添加元素 mylist.append(1) mylist.append(123) print(f添加元素后的list内容:{mylist}) #访问元素 print(f访问list中的第一个元素:{mylist[0]}) print(f访问list中的第二个元素:{mylist[1]}) #修改元素 mylist[1] 123456 print(f修改元素后的list内容:{mylist}) #删除元素 mylist.remove(1) # 删除值为1的元素 print(f删除元素后的list内容:{mylist}) #列表中添加列表mylist2的内容 mylist2 [996,908,432,101] mylist.extend(mylist2)#extend方法是将mylist2中的元素逐个添加到mylist中 print(f添加mylist2内容后的list内容:{mylist}) #列表内容排序 mylist3 mylist.sort()#默认升序排序赋值给mylist3后mylist3的值为None因为sort()方法是就地排序不返回新的列表 print(f升序排序后的list内容:{mylist},mylist3:{mylist3}) #按降序排序 mylist.sort(reverseTrue)#reverse参数为True时按降序排序 print(f降序排序后的list内容:{mylist}) #列表切片 #举例只取第3-5个元素 sliced_list mylist[3:6]#切片操作mylist[3:6]表示从索引3开始包含索引3到索引6结束不包含索引6即取第3、4、5个元素左闭右开区间 print(f切片后的list内容:{sliced_list}) #列表长度 len_mylist len(mylist) print(flist的长度:{len_mylist}) #列表清空 mylist.clear()#将列表中的所有元素删除但列表对象仍然存在mylist仍然是一个空列表[] print(f清空后的list内容:{mylist}) #列表复制 copy_mylist mylist.copy()#copy方法创建一个新的列表对象并将mylist中的元素复制到新的列表中copy_mylist和mylist是两个不同的列表对象 print(f复制后的list内容:{copy_mylist}) #深拷贝和浅拷贝的区别 import copy #举例 ori_list [1, 2, [3, 4]] #浅拷贝就是创建一个新的列表对象但其中的元素仍然是原来列表中的元素的引用即新列表中的元素和原列表中的元素指向同一个对象修改新列表中的元素会影响原列表中的元素 qian_copy_ori_list copy.copy(ori_list) #打印浅拷贝的qian_copy_ori_list和原列表ori_list print(f浅拷贝后的列表内容:{qian_copy_ori_list},原列表内容:{ori_list}) #现在修改浅拷贝列表中的元素看看是否会影响原列表 qian_copy_ori_list[2][0] 999 print(f修改浅拷贝列表后的内容:{qian_copy_ori_list},原列表内容:{ori_list}) #可以看到修改浅拷贝列表中的元素后原列表中的元素也被修改了因为浅拷贝只是复制了列表对象但其中的元素仍然是原来列表中的元素的引用所以修改新列表中的元素会影响原列表中的元素。 #所以浅拷贝在实际应用中建议只在列表中没有嵌套列表或者其他可变对象时使用否则可能会导致意外错误。 #copy常用的函数主要是以下内容1.浅拷贝copy.copy()2.深拷贝copy.deepcopy() #深拷贝 deep_copy_ori_list copy.deepcopy(ori_list) #深拷贝是完全复制了原列表中的元素不管是基本数据类型还是复杂数据类型都会创建一个新的对象所以修改深拷贝列表中的元素不会影响原列表中的元素。 #打印深拷贝的deep_copy_ori_list和原列表ori_list print(f深拷贝后的列表内容:{deep_copy_ori_list},原列表内容:{ori_list}) #现在修改深拷贝列表中的元素看看是否会影响原列表 deep_copy_ori_list[2][0] 888 print(f修改深拷贝列表后的内容:{deep_copy_ori_list},原列表内容:{ori_list}) deep_copy_ori_list[0] 666 print(f修改深拷贝列表中的基本数据类型元素后的内容:{deep_copy_ori_list},原列表内容:{ori_list}) #可以看到修改深拷贝列表中的元素后原列表中的元素没有被修改因为深拷贝完全复制了原列表中的元素不管是基本数据类型还是复杂数据类型都会创建一个新的对象所以修改新列表中的元素不会影响原列表中的元素。 #所以深拷贝在实际应用中建议在列表中有嵌套列表或者其他可变对象时使用以避免意外错误。 #一般在实际应用中浅拷贝远多于深拷贝因为默认浅拷贝共享内存极致提速省内存但是要改数据、保原数据 → 请使用深拷贝 #多维列表的操作多维列表就是列表嵌套列表可以看作是一个矩阵或者表格常见的操作有以下内容 #1.创建多维列表 multi_list [[1, 2, 3], [4, 5, 6], [7, 8, 9]]#这是一个二维列表包含三个元素每个元素都是一个列表 最外层一整个大列表 → 第 1 维 里面每一个元素还是列表 → 第 2 维 ,[[[[[几个方括号就是几维度[[[[[[就是6维 #可以直接打印列表的形状和维度 import numpy as np #numpy库是python中常用的科学计算库提供了多维数组对象和各种操作多维数组的函数可以方便地处理多维列表。 shape_multi_list np.array(multi_list).shape#将多维列表转换为numpy数组然后获取其形状 print(f多维列表的形状:{shape_multi_list})#多维列表的形状:(3, 3) #打印维度 print(f多维列表的维度:{np.ndim(multi_list)})#多维列表的维度:2 #打印np.array(multi_list)的内容 print(f将多维列表转换为numpy数组后的内容:\n{np.array(multi_list)})#将多维列表转换为numpy数组后的内容:[[1 2 3] [4 5 6] [7 8 9]] #打印np.array(multi_list).shape[0]的内容 print(f将多维列表转换为numpy数组后的第一行内容:\n{np.array(multi_list).shape[0]})#将多维列表转换为numpy数组后的第一行内容:[1 2 3] #2.访问多维列表中的元素 #打印第一维的所有元素 for i in range(np.array(multi_list).shape[0]): print(f第一维的每一个元素:{multi_list[i]}) #打印第二维的所有元素 for i in range(np.array(multi_list).shape[0]):#第一维度本示例第一维有3个列表元素 for j in range(np.array(multi_list).shape[1]): print(f第二维的第一个元素:{multi_list[i][j]})#访问多维列表中的元素multi_list[i][j]表示访问第一维的第i个元素中的第二维的第j个元素 #列表中的 [:,:] 用法 test_list [[1, 2, 3], [4, 5, 6], [7, 8, 9]] #使用切片操作访问多维列表中的元素[:,:]表示访问所有行和所有列即访问整个多维列表 #使用切片操作访问多维列表中的元素,只访问第一行和第二行中每一行的前两个元素即1 2 和4 5 第三行不访问 for row in test_list[:2]: print(frow:{row})#访问多维列表中的元素test_list[:2]表示访问第一行和第二行即访问前两行的所有元素 print(frow:{row[:2]})