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