导航:首页 > 编程语言 > Pythonlist去重函数

Pythonlist去重函数

发布时间:2022-08-06 04:00:57

python中如何删除列表中重复的元素

举个例子,比如有这样一个列表l,可表示为[1,2,2,5,3,6],它可以通过下面的操作达到去重的目的:l=list(set(l)),在python shell中代码执行如下图所示:

python列表去重操作代码运行结果

⑵ Python如何对列表进行去重

1.使用set的特型,python的set和其他语言类似,是一个无序不重复元素集
orgList=[1,0,3,7,7,5]
#list()方法是把字符串str或元组转成数组
formatList=list(set(orgList))
print(formatList)
结果:
[0,1,3,5,7]
2.使用keys()方法
orgList=[1,0,3,7,7,5]
#list()方法是把字符串str或元组转成数组
formatList=list({}.fromkeys(orgList).keys())
print(formatList)
结果:
[0,1,3,5,7]
上面两种方法的问题是:结果是没有保持原来的顺序。
3.循环遍历法
orgList=[1,0,3,7,7,5]
formatList=[]
foridinorgList:
ifidnotinformatList:
formatList.append(id)
print(formatList)
结果:
[1,0,3,7,5]
这样的代码不够简洁
4.按照索引再次排序
orgList=[1,0,3,7,7,5]
formatList=list(set(orgList))
formatList.sort(key=orgList.index)
print(formatList)
结果:
[1,0,3,7,5]

⑶ python删除list重复元素

在Python中主要有5种方式 。
1、使用set函数
set是定义集合的,无序,非重复
numList = [1,1,2,3,4,5,4]
print(list(set(numList)))
#[1, 2, 3, 4, 5]
2、先把list重新排序,然后从list的最后开始扫描
a = [1, 2, 4, 2, 4, 5,]
a.sort()
last = a[-1]
for i in range(len(a) - 2, -1, -1):
if last == a[i]:
del a[i]
else:
last = a[i]
print(a) #[1, 2, 4, 5]
3、使用字典函数
a=[1,2,4,2,4,]
b={}
b=b.fromkeys(a)
c=list(b.keys())
print(c) #[1, 2, 4]
4、append方式
def delList(L):
L1 = []
for i in L:
if i not in L1:
L1.append(i)
return L1
print(delList([1, 2, 2, 3, 3, 4, 5])) #[1, 2, 3, 4, 5]
5、count + remove方式
def delList(L):
for i in L:
if L.count(i) != 1:
for x in range((L.count(i) - 1)):
L.remove(i)
return L
print(delList([1, 2, 2, 3, 3, 4]))#[1, 2, 3, 4]

⑷ python删除重复数据

利用集合的不重复属性,可以先转换至集合,再用list()函数转换回来即可。
比如,a是一个列表,a=list(set(a)),即可完成列表去重。

⑸ python如何列表去重取最大值

list=[('小王','第一次考试','5'),('小陈','第二次考试','7'),('小陈','第一次考试','1'),('小王','第六次考试','20')]

dic={}

list1=[]


forpersoninlist:

ifperson[0]notindic.keys():

dic[person[0]]=person

elifint(dic[person[0]][2])<int(person[2]):

dic[person[0]]=person

forvalueindic.values():

list1.append(value)

print(list1)

*.你看到的代码应该是没有缩进了,你可以右键>检查,从相应的源码中能看到相关的缩进

---------

稍等我给你写下思路:

总体的思路就是动态的改变字典dic,字典中的键是tuple的第1个元素,即人名,相应的键值就是整个tuple,如dic={'小王':('小王','第一次考试','5')};而a.这个字典中的键值对是不断增加的,b.键值是不断改变的.这里的a,b两点要怎么理解呢?


先说a.这个字典中的键值对是不断增加的?

比如说我一开始的字典是空的,然后我遍历字典的时候,我会拿每次取到的列表中的元素(即元素)的第1个元素作为键,去dic中找,看看当前dic中是否有这个键,如果没有,则我会在dic中新增一个键值对,这个键值对的键即tuple的第1个元素,相应的键值为整个tuple,举例:

当前dic为{'小王':('小王','第一次考试','5')},假如我遍历到list中的第2个元素,即('小陈','第二次考试','7'),我会取这个tuple的第1个元素,即'小陈',看看dic字典的键中是否有'小陈',结果一看dic中只有一个键'小王',没有'小陈',则我会在dic中新增一个键值对,最后得到新的dic:{'小王':('小王','第一次考试','5'),'小陈':('小陈','第二次考试','7')}.

再一看b点:键值是不断变化的:

接上面说,此时字典dic的值为{'小王':('小王','第一次考试','5'),'小陈':('小陈','第二次考试','7')},然后列表我遍历到了第3个元素,即('小陈','第一次考试','1')。此时前面的处理逻辑还是一样的,取tuple中的第1个元素去dic的键中找,看看是否存在,一找存在,字典dic中有'小陈'这个键了,则继续第2步,用dic中'小陈'键值tuple中的第3个元素和当前从列表中取的第1个元素为'小陈'的tuple的第3个元素相比较,如果字典中的那个大,则字典中'小陈'的键值不变,如果从列表中拿到的这个tuple中第3个值大,则将字典中'小陈'的键值整个替换为从列表中取的这个当前tuple.

最终我们得到了一个键唯一,且相应键值为首个元素相同tuples中第3个值最大的这么一个字典。

因为你要求最终得到的类型是字典,所以接下来就是如果将这个字典dic转化为你要的字典,dic.alues()得到的是dic中所有值的这么一个迭代器,然后使用for循环遍历这个迭代器,把每次迭代器中取的值都追加到列表list1中。

最终打印的list1,符合题目要求

⑹ Python数字列表去重,如何简单的既去重还能按原来的顺序输出

Python数字列表去重,还能按原来的顺序输出.

第一种方法

alist = [1, 2, 2, 4, 4, 6, 7]

b = []

for i in alist:

if i not in b:

b.append(i)

print(b)

源代码(注意源代码的缩进)

⑺ python list 去重复

import
a = [{'a':12,'b':21},{'a':13,'b':22},{'a':14,'b':22},{'a':15,'b':23},{'a':16,'b':22}]
d = {}
for i in a:
d.setdefault(i['b'], 0)
d[i['b']] += 1
at = .(a)
for i in at:
if d[i['b']] > 1:
a.remove(i)
print a
先把b值统计一下。然后再一个比对,如果统计个数大于1,就从列表中移出。

⑻ python中删除列表中的重复内容

题主你好,

可以通过"集合"过渡一下, 来实现列表的去重, 即整个过程是:

原始列表-->集合-->再转回列表

分解来看:

=====

希望可以帮到题主, 欢迎追问.

⑼ python中对list去重的多种方法

python中对list去重的多种方法
今天遇到一个问题,在同事随意的提示下,用了 itertools.groupby 这个函数。不过这个东西最终还是没用上。
问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变。
直观方法
最简单的思路就是:

这样也可行,但是看起来不够爽。

用set

另外一个解决方案就是用set:
代码如下:

ids = [1,4,3,3,4,2,3,4,5,6,1]
ids = list(set(ids))

这样的结果是没有保持原来的顺序。

按照索引再次排序

最后通过这种方式解决:
代码如下:

ids = [1,4,3,3,4,2,3,4,5,6,1]
news_ids = list(set(ids))
news_ids.sort(ids.index)

使用itertools.grouby

文章一开始就提到itertools.grouby, 如果不考虑列表顺序的话可用这个:
代码如下:

ids = [1,4,3,3,4,2,3,4,5,6,1]
ids.sort()
it = itertools.groupby(ids)

for k, g in it:
print k

关于itertools.groupby的原理可以看这里:http://docs.python.org/2/library/itertools.html#itertools.groupby

网友补充:用rece

网友reatlk留言给了另外的解决方案。我补充并解释到这里:
代码如下:

In [5]: ids = [1,4,3,3,4,2,3,4,5,6,1]

In [6]: func = lambda x,y:x if y in x else x + [y]

In [7]: rece(func, [[], ] + ids)
Out[7]: [1, 4, 3, 2, 5, 6]

上面是我在ipython中运行的代码,其中的 lambda x,y:x if y in x else x + [y] 等价于 lambda x,y: y in x and x or x+[y] 。

⑽ python,list如何去重

通过set来去重

>>>l=[1,2,3,4,5,2,1,3,45,3,21,12,4]
>>>set(l)
set([1,2,3,4,5,12,45,21])
>>>printlist(set(l))
[1,2,3,4,5,12,45,21]
>>>
阅读全文

与Pythonlist去重函数相关的资料

热点内容
linux命令连接oracle 浏览:200
垫江停车收费桩怎么上App 浏览:133
好兴动app还款怎么登录不上去了 浏览:665
郑州云服务器托管 浏览:722
服务器地址跟踪 浏览:980
免费google云服务器 浏览:516
摘译和编译的英文 浏览:359
热泵压缩机选型 浏览:121
op手机微信加密如何解除 浏览:386
如何在王牌战争找到高爆率服务器 浏览:13
江浙小学语文辅导课用什么APP 浏览:99
新梦幻大陆服务器地址 浏览:241
网吧服务器怎么更换壁纸 浏览:530
linux命令方法 浏览:332
linux下载freetype 浏览:123
程序员入驻平台 浏览:327
程序员大战外挂 浏览:745
html实例教程pdf 浏览:157
linux命令开放所有权限 浏览:575
30岁能学会编程 浏览:737