金天牛

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

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']

 

posted on   金天牛  阅读(261)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示