1、列表List是什么列表是Python中常用的数据结构之一它是一个有序、可变的集合可以存储任意类型的数据。核心特性对比特性列表List字符串String可变性可变可修改不可变元素类型任意类型混合只能是字符创建方式[]或list()或str()常用操作增删改查、排序查找、替换、分割列表的基础操作操作语法说明创建my_list [1, 2, 3]方括号创建索引my_list[0]获取第一个元素从0开始切片my_list[1:3]获取第2到第3个元素长度len(my_list)获取元素个数2、代码示例deftest():# 示例1创建和访问列表fruits[苹果,香蕉,橙子,葡萄]print(水果列表:,fruits)print(第一个水果:,fruits[0])print(最后一个水果:,fruits[-1])# 负数索引从末尾开始print(前两个水果:,fruits[:2])print(列表长度:,len(fruits))# 示例2修改列表元素fruits[1]芒果# 修改第二个元素print(修改后的列表:,fruits)# 示例3增加元素fruits.append(西瓜)# 末尾添加print(增加后的列表:,fruits)fruits.insert(1,草莓)print(插入后的列表:,fruits)# 示例4删除元素removedfruits.pop()# 删除并返回最后一个元素print(f删除了{removed}, 剩余{fruits})fruits.remove(芒果)# 删除指定元素print(删除芒果后,fruits)# 示例5扩展列表more_fruits[菠萝,桃子]fruits.extend(more_fruits)# 合并列表print(扩展后,fruits)# 示例6遍历列表print(\n遍历水果列表)forfruitinfruits:print(f-{fruit})# 带索引的遍历print(\n带索引的遍历)fori,fruitinenumerate(fruits):print(f{i}.{fruit})# 示例7排序numbers[3,2,1,5,6,7,0]numbers.sort()# 升序排序print(升序排序,numbers)numbers.sort(reverseTrue)# 降序排序print(降序排序,numbers)# 示例8列表推导式squares[x**2forxinrange(1,6)]print(1-5的平方:,squares)# 此处为AI补充说明print(\n 列表推导式详解 )print(语法结构: [表达式 for 变量 in 可迭代对象 if 条件])print(执行过程:)print(1. 遍历可迭代对象如 range(1, 6))print(2. 将每个元素赋值给变量x)print(3. 计算表达式x**2)print(4. 将结果收集到新列表中)print(5. 可选通过 if 条件过滤元素)print(\n与普通循环对比:)print(- 普通循环: 需要先创建空列表再循环添加)print(- 列表推导式: 一行代码完成更简洁高效)print(- 示例对比:)print( 普通循环:)print( squares [])print( for x in range(1, 6):)print( squares.append(x**2))print( 列表推导式:)print( squares [x**2 for x in range(1, 6)])# 更多实用的列表推导式示例print(\n 更多列表推导式示例 )# 示例8.1条件过滤even_squares[x**2forxinrange(1,11)ifx%20]print(1-10中偶数的平方:,even_squares)print(说明: 只计算偶数的平方if x % 2 0 过滤奇数)# 示例8.2嵌套推导式二维列表展开matrix[[1,2,3],[4,5,6],[7,8,9]]flattened[numforrowinmatrixfornuminrow]print(二维矩阵展开为一维:,flattened)print(说明: 外层循环遍历行内层循环遍历每行的元素)# 示例8.3带条件的复杂推导式words[apple,banana,cherry,date,elderberry]long_words[word.upper()forwordinwordsiflen(word)5]print(长度大于5的单词转大写:,long_words)print(说明: 先过滤长度5的单词再转换为大写)# 示例8.4字典推导式扩展知识numbers[1,2,3,4,5]square_dict{x:x**2forxinnumbers}print(数字到平方的字典:,square_dict)print(说明: 字典推导式语法类似用花括号和键值对)# 示例9嵌套列表列表中的列表matrix[[1,2,3],[4,5,6],[7,8,9]]print(\n嵌套列表矩阵)forrowinmatrix:print(row)print(第二行第三列,matrix[1][2])# 访问6if__name____main__:test()3、练习题基础操作创建一个购物清单包含牛奶、面包、鸡蛋、苹果。然后在面包后面插入黄油删除牛奶在末尾添加咖啡打印最终购物清单和总商品数量deftest():# 创建清单列表shopping_list[牛奶,面包,鸡蛋,苹果]# 面包后面插入黄油bread_indexshopping_list.index(面包)shopping_list.insert(bread_index1,黄油)# 删除牛奶shopping_list.remove(牛奶)# 在末尾添加咖啡shopping_list.append(咖啡)# 打印最终购物清单和商品总数print(购物清单:,shopping_list)print(商品数量:,len(shopping_list))if__name____main__:test()成绩统计给定学生成绩列表[85, 92, 78, 90, 88, 95, 76, 85]计算平均分找出最高分和最低分统计有多少人成绩在90分以上将成绩从高到低排序并打印deftest():# 给定学生成绩列表grades[85,92,78,90,88,95,76,85]# 计算平均分averagesum(grades)/len(grades)print(平均分:,average)# 找出最高分和最低分max_grademax(grades)min_grademin(grades)print(f最高分{max_grade}, 最低分{min_grade})# 统计有多少人成绩在90分以上high_grades[gradeforgradeingradesifgrade90]print(f90分以上的人数{len(high_grades)})# 将成绩从高到低排序并打印sorted_gradessorted(grades,reverseTrue)print(成绩从高到低,sorted_grades)if__name____main__:test()矩阵转置给定一个3×3矩阵matrix [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]编写代码实现矩阵转置行列互换输出结果应为[ [1, 4, 7], [2, 5, 8], [3, 6, 9] ]deftest():matrix[[1,2,3],[4,5,6],[7,8,9]]# 方法1使用嵌套循环transposed[]foriinrange(len(matrix[0])):# 遍历列数new_row[]forrowinmatrix:# 遍历行new_row.append(row[i])transposed.append(new_row)print(转置矩阵方法1:)forrowintransposed:print(row)# 方法2使用列表推导式transposed2[[row[i]forrowinmatrix]foriinrange(len(matrix[0]))]print(\n转置矩阵方法2:)forrowintransposed2:print(row)if__name____main__:test()补充知识内存效率列表在内存中是连续存储的当列表很大时频繁的插入/删除操作特别是开头效率较低浅拷贝与深拷贝list2 list1只是创建引用修改list2会影响list1使用list2 list1.copy()或list2 list1[:]创建独立副本性能对比append()O(1)在末尾添加很快insert(0, x)O(n)在开头添加较慢需要移动所有元素in操作O(n)需要遍历查找
python基础学习-03(列表)
1、列表List是什么列表是Python中常用的数据结构之一它是一个有序、可变的集合可以存储任意类型的数据。核心特性对比特性列表List字符串String可变性可变可修改不可变元素类型任意类型混合只能是字符创建方式[]或list()或str()常用操作增删改查、排序查找、替换、分割列表的基础操作操作语法说明创建my_list [1, 2, 3]方括号创建索引my_list[0]获取第一个元素从0开始切片my_list[1:3]获取第2到第3个元素长度len(my_list)获取元素个数2、代码示例deftest():# 示例1创建和访问列表fruits[苹果,香蕉,橙子,葡萄]print(水果列表:,fruits)print(第一个水果:,fruits[0])print(最后一个水果:,fruits[-1])# 负数索引从末尾开始print(前两个水果:,fruits[:2])print(列表长度:,len(fruits))# 示例2修改列表元素fruits[1]芒果# 修改第二个元素print(修改后的列表:,fruits)# 示例3增加元素fruits.append(西瓜)# 末尾添加print(增加后的列表:,fruits)fruits.insert(1,草莓)print(插入后的列表:,fruits)# 示例4删除元素removedfruits.pop()# 删除并返回最后一个元素print(f删除了{removed}, 剩余{fruits})fruits.remove(芒果)# 删除指定元素print(删除芒果后,fruits)# 示例5扩展列表more_fruits[菠萝,桃子]fruits.extend(more_fruits)# 合并列表print(扩展后,fruits)# 示例6遍历列表print(\n遍历水果列表)forfruitinfruits:print(f-{fruit})# 带索引的遍历print(\n带索引的遍历)fori,fruitinenumerate(fruits):print(f{i}.{fruit})# 示例7排序numbers[3,2,1,5,6,7,0]numbers.sort()# 升序排序print(升序排序,numbers)numbers.sort(reverseTrue)# 降序排序print(降序排序,numbers)# 示例8列表推导式squares[x**2forxinrange(1,6)]print(1-5的平方:,squares)# 此处为AI补充说明print(\n 列表推导式详解 )print(语法结构: [表达式 for 变量 in 可迭代对象 if 条件])print(执行过程:)print(1. 遍历可迭代对象如 range(1, 6))print(2. 将每个元素赋值给变量x)print(3. 计算表达式x**2)print(4. 将结果收集到新列表中)print(5. 可选通过 if 条件过滤元素)print(\n与普通循环对比:)print(- 普通循环: 需要先创建空列表再循环添加)print(- 列表推导式: 一行代码完成更简洁高效)print(- 示例对比:)print( 普通循环:)print( squares [])print( for x in range(1, 6):)print( squares.append(x**2))print( 列表推导式:)print( squares [x**2 for x in range(1, 6)])# 更多实用的列表推导式示例print(\n 更多列表推导式示例 )# 示例8.1条件过滤even_squares[x**2forxinrange(1,11)ifx%20]print(1-10中偶数的平方:,even_squares)print(说明: 只计算偶数的平方if x % 2 0 过滤奇数)# 示例8.2嵌套推导式二维列表展开matrix[[1,2,3],[4,5,6],[7,8,9]]flattened[numforrowinmatrixfornuminrow]print(二维矩阵展开为一维:,flattened)print(说明: 外层循环遍历行内层循环遍历每行的元素)# 示例8.3带条件的复杂推导式words[apple,banana,cherry,date,elderberry]long_words[word.upper()forwordinwordsiflen(word)5]print(长度大于5的单词转大写:,long_words)print(说明: 先过滤长度5的单词再转换为大写)# 示例8.4字典推导式扩展知识numbers[1,2,3,4,5]square_dict{x:x**2forxinnumbers}print(数字到平方的字典:,square_dict)print(说明: 字典推导式语法类似用花括号和键值对)# 示例9嵌套列表列表中的列表matrix[[1,2,3],[4,5,6],[7,8,9]]print(\n嵌套列表矩阵)forrowinmatrix:print(row)print(第二行第三列,matrix[1][2])# 访问6if__name____main__:test()3、练习题基础操作创建一个购物清单包含牛奶、面包、鸡蛋、苹果。然后在面包后面插入黄油删除牛奶在末尾添加咖啡打印最终购物清单和总商品数量deftest():# 创建清单列表shopping_list[牛奶,面包,鸡蛋,苹果]# 面包后面插入黄油bread_indexshopping_list.index(面包)shopping_list.insert(bread_index1,黄油)# 删除牛奶shopping_list.remove(牛奶)# 在末尾添加咖啡shopping_list.append(咖啡)# 打印最终购物清单和商品总数print(购物清单:,shopping_list)print(商品数量:,len(shopping_list))if__name____main__:test()成绩统计给定学生成绩列表[85, 92, 78, 90, 88, 95, 76, 85]计算平均分找出最高分和最低分统计有多少人成绩在90分以上将成绩从高到低排序并打印deftest():# 给定学生成绩列表grades[85,92,78,90,88,95,76,85]# 计算平均分averagesum(grades)/len(grades)print(平均分:,average)# 找出最高分和最低分max_grademax(grades)min_grademin(grades)print(f最高分{max_grade}, 最低分{min_grade})# 统计有多少人成绩在90分以上high_grades[gradeforgradeingradesifgrade90]print(f90分以上的人数{len(high_grades)})# 将成绩从高到低排序并打印sorted_gradessorted(grades,reverseTrue)print(成绩从高到低,sorted_grades)if__name____main__:test()矩阵转置给定一个3×3矩阵matrix [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]编写代码实现矩阵转置行列互换输出结果应为[ [1, 4, 7], [2, 5, 8], [3, 6, 9] ]deftest():matrix[[1,2,3],[4,5,6],[7,8,9]]# 方法1使用嵌套循环transposed[]foriinrange(len(matrix[0])):# 遍历列数new_row[]forrowinmatrix:# 遍历行new_row.append(row[i])transposed.append(new_row)print(转置矩阵方法1:)forrowintransposed:print(row)# 方法2使用列表推导式transposed2[[row[i]forrowinmatrix]foriinrange(len(matrix[0]))]print(\n转置矩阵方法2:)forrowintransposed2:print(row)if__name____main__:test()补充知识内存效率列表在内存中是连续存储的当列表很大时频繁的插入/删除操作特别是开头效率较低浅拷贝与深拷贝list2 list1只是创建引用修改list2会影响list1使用list2 list1.copy()或list2 list1[:]创建独立副本性能对比append()O(1)在末尾添加很快insert(0, x)O(n)在开头添加较慢需要移动所有元素in操作O(n)需要遍历查找