python列表数据处理之列表去重和循环删除
一、列表去重
比较简单的方法就是用集合set的属性:集合中不能出现重复的元素
例如: a = [1,2,3,4,5,4,3],例如 a1 =list(set(a)) ,则 a1 = [1,2,3,4,5]
如果同时还有个 :b = ['a','b','c','d','e','f','g']
和 a 一一对应,如果需要把a去重后,还能和b一一对应,可以把b和a对应的元素存入一个列表,然后总体再做一个列表,用一个函数实现如下:
1 def deduplication_list(list1, list2): 2 # 传入2个长度相同的列表,第一个列表有重复,作去重处理,第2个列表一一对应,然后对应第一个列表去重后的数据,合并相同的到一个列表中,作为元素存于第2个列表 3 list_str = [] 4 list_new = list(set(list1)) 5 # print(list_new) 6 for i in range(len(list_new)): 7 list_str.append([]) 8 for j in range(len(list1)): 9 if list_new[i] == list1[j]: 10 list_str[i].append(list2[j]) 11 return list_new, list_str 12 a = [1,2,3,4,5,4,3] 13 b = ['a','b','c','d','e','f','g'] 14 a1,b1 = deduplication_list(a,b) 15 print(f"a1 {a1},b1 {b1}")
则显示结果:a1 [1, 2, 3, 4, 5],b1 [['a'], ['b'], ['c', 'g'], ['d', 'f'], ['e']]
二、列表循环删除。
列表循环删除是比较麻烦的,因为删除一个元素后,整个列表改变了,再次删除就不是原来的样子了。
尤其是有2个一一对应的列表,删除一个列表中不合要求的元素,需要,第2个列表也需要对应删除时,需要谨慎处理,此处推荐2个方法。
1.倒序删除
1 a001 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14] 2 a002 = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n'] 3 # 删除a001中的元素:符合除5余数为0的条件 4 for i in range(len(a001))[::-1]: #倒序赋值序号 5 print(i) 6 if a001[i] % 5 == 0: #取序号对应的元素 7 a001.pop(i) 8 a002.pop(i) 9 print(a001) 10 print(a002)
则结果为:
[1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14]
['a', 'b', 'c', 'd', 'f', 'g', 'h', 'i', 'k', 'l', 'm', 'n']
2.新增符合要求的元素到一个新列表里,不改变原有列表。 此方法更为推荐。
1 a001 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14] 2 a002 = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n'] 3 b001 = [] 4 b002 = [] 5 for i in range(len(a001)): 6 print(i) 7 if a001[i] % 5 != 0: #取序号对应的元素 8 b001.append(a001[i]) #元素插入新列表 9 b002.append(a002[i]) 10 print(b001) 11 print(b002)
结果是一样的:
[1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14]
['a', 'b', 'c', 'd', 'f', 'g', 'h', 'i', 'k', 'l', 'm', 'n']
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?