一、练习题目定义一个函数该函数用于从第一个列表list1中移除所有存在于第二个列表list2中的元素二、代码1.初始版本代码如下defremove_number(list1,list2):fori inrange(list1):forj inrange(list2):ifij:list1.remove(j)returnlist1 list1[1,2,5,8,10,8,45,78,99,123,56]list2[3,6,8,10,78,56]print(remove_number(list1,list2))TypeError: ‘list’ object cannot be interpreted as an integer问题range()里传了列表range()需要的是整数比如 range(10)而不是 [1, 10]2.优化版本代码如下defremove_number(list1,list2):fori in list2:ifi in list1:list1.remove(i)returnlist1 list1[1,2,5,8,10,8,45,78,99,123,56]list2[3,6,8,10,78,56]print(f从列表{list1}中移除元素{list2}的结果为{remove_number(list1, list2)})输出从列表[1, 2, 5, 8, 10, 8, 45, 78, 99, 123, 56]中移除元素[3, 6, 8, 10, 78, 56]的结果为[1, 2, 5, 8, 45, 99, 123]问题 list1里面有2个重复元素和list2相同但是remove只删除了第一个相同的元素3.优化版本代码如下# 列表表达式 defremove_number(list1,list2):return[ifori in list1ifi not in list2]list1[1,2,5,8,10,8,45,78,99,123,56]list2[3,6,8,10,78,56]print(f从列表{list1}中移除元素{list2}的结果为{remove_number(list1, list2)})采用列表表达式输出从列表[1, 2, 5, 8, 10, 8, 45, 78, 99, 123, 56]中移除元素[3, 6, 8, 10, 78, 56]的结果为[1, 2, 5, 45, 99, 123]总结for i in range(起始终止步长)for i in list1for i in range(len(list1))列表表达式[输出表达式 for 变量 in 可迭代对象 if 条件][i for i in list1 if i not in list2]例如result []for i in range(5):result.append(i * 2)换成列表表达式result [i * 2 for i in range(5)]列表常用函数操作列表常用方法操作4.1 增加4.2 删除4.3 统计查找4.4 改序对比函数与方法✅ 函数len / max / min / sum / sorted / list / enumerate / zip✅ 方法append / extend / insert / remove / pop / clear / index / count / sort / reverse
Python初学者项目练习28--移除列表中的多个元素
发布时间:2026/5/20 18:06:21
一、练习题目定义一个函数该函数用于从第一个列表list1中移除所有存在于第二个列表list2中的元素二、代码1.初始版本代码如下defremove_number(list1,list2):fori inrange(list1):forj inrange(list2):ifij:list1.remove(j)returnlist1 list1[1,2,5,8,10,8,45,78,99,123,56]list2[3,6,8,10,78,56]print(remove_number(list1,list2))TypeError: ‘list’ object cannot be interpreted as an integer问题range()里传了列表range()需要的是整数比如 range(10)而不是 [1, 10]2.优化版本代码如下defremove_number(list1,list2):fori in list2:ifi in list1:list1.remove(i)returnlist1 list1[1,2,5,8,10,8,45,78,99,123,56]list2[3,6,8,10,78,56]print(f从列表{list1}中移除元素{list2}的结果为{remove_number(list1, list2)})输出从列表[1, 2, 5, 8, 10, 8, 45, 78, 99, 123, 56]中移除元素[3, 6, 8, 10, 78, 56]的结果为[1, 2, 5, 8, 45, 99, 123]问题 list1里面有2个重复元素和list2相同但是remove只删除了第一个相同的元素3.优化版本代码如下# 列表表达式 defremove_number(list1,list2):return[ifori in list1ifi not in list2]list1[1,2,5,8,10,8,45,78,99,123,56]list2[3,6,8,10,78,56]print(f从列表{list1}中移除元素{list2}的结果为{remove_number(list1, list2)})采用列表表达式输出从列表[1, 2, 5, 8, 10, 8, 45, 78, 99, 123, 56]中移除元素[3, 6, 8, 10, 78, 56]的结果为[1, 2, 5, 45, 99, 123]总结for i in range(起始终止步长)for i in list1for i in range(len(list1))列表表达式[输出表达式 for 变量 in 可迭代对象 if 条件][i for i in list1 if i not in list2]例如result []for i in range(5):result.append(i * 2)换成列表表达式result [i * 2 for i in range(5)]列表常用函数操作列表常用方法操作4.1 增加4.2 删除4.3 统计查找4.4 改序对比函数与方法✅ 函数len / max / min / sum / sorted / list / enumerate / zip✅ 方法append / extend / insert / remove / pop / clear / index / count / sort / reverse