当前位置:首页 » 编程语言 » listdistinctpython

listdistinctpython

发布时间: 2023-01-28 14:32:00

python两个列表怎么比较找出不同

可以使用把列表转换成集合然后做它们的差集,比如我们可以从下面的例子中得出l1和l2列表不同的元素:


l1 = [1,2,3,4,5]
l2 = [1,3,5]
difference = list(set(l1) - set(l2))
print(difference)


输出:

[2, 4]

② 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实现给定一个列表判断里面是否有重复元素

有两个方法:

  1. 使用列表的count方法,因为count方法可以做对象内的元素进行出现次数叠加计算

list1=[1,2,3,4,4,5,6,7]
list1.count(1)#结果为1
list1.count(4)#结果为2
foriinlist1:
iflist1.count(i)>=2:
print('该元素%s重复'%i)
#结果:
该元素4重复
该元素4重复#因为迭代了两次4所以有两次输出,功能是实现了,但是却打印了两次,有点不理想

2.借用工厂函数set()把对象转为集合和列表的方法(浅复制),集合会默认把重复元素去掉

list1=[1,2,3,4,4,5,6,7]
list2=list1.()#为了不破坏原数据,临时浅复制给变量list2
list3=list(set(list2))#使用set()函数将list2转为集合去掉重复元素又用list()转回列表
foriinlist3:#对无重复元素的列表list3迭代
ifiinlist2:
list1.remove(i)#当list3内的元素存在于list2中,则把其元素从list2中删除,最后就会留下重复元素
print('list1:%s中的重复元素有:%s'%(list1,list2))#组后输出原数据list1和最终结果list2
#结果:
list1:[1,2,3,4,4,5,6,7]中的重复元素有:[4]
#效果实现了,也没问题,就是变量使用有点多。看你选择了

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

⑤ list对象如何实现重命名(Python)

# coding = utf-8
import os
path = "D:\\chunyu"#想要重命名所有文件存放的文件夹
filelist = os.listdir(path) #该文件夹下所有的文件(包括文件夹)
list = []
fileopen = open('D:\chunyu.txt','r')#之后想要重命名成的所有名字的集合,这个名字为除去文件扩展名的文件名
i =0
for file in filelist:
print(file)
for line in fileopen:
line = line.strip('\n')
list.append(line)#读取txt里面的所有名字的集合写入list文件
print(list)
fileopen.close()

for file in filelist: #遍历所有文件
Olddir=os.path.join(path,file) #原来的文件路径
if os.path.isdir(Olddir): #如果是文件夹则跳过
continue
filename=os.path.splitext(file)[0] #文件名
filetype=os.path.splitext(file)[1] #文件扩展名
Newdir=os.path.join(path,str(list[i])+filetype)
os.rename(Olddir,Newdir)#重命名
print(Olddir+" has changed as "+Newdir)
i = i+1

⑥ Python。重复元素判定。编写一个函数,接受列表作为参数

代码如下:

def func1(num_list):
if len(num_list) != len(set(num_list)):
return True
else:
return False
if __name__ == '__main__':
num_list = [[1, 2, 3, 4], [6, 7, 8], [4, 5, 6, 6, 6]]
for one_list in num_list:
print(func1(one_list))

运行结果:

(6)listdistinctpython扩展阅读

python对列表去重的几种方式:

1、直观方法,先建立一个新的空列表,通过遍历原来的列表,再利用逻辑关系not in 来去重。总结:这样可以做出来,但是过程不够简单。但是此方法保证了列表的顺序性。

2、利用set的自动去重功能,将列表转化为集合再转化为列表,利用集合的自动去重功能。简单快速。缺点是:使用set方法无法保证去重后的顺序。

⑦ python的list 和tupe

一、list
list是python内置的有序的列表,可以随时添加和删除其中的元素
1、 定义

list_name = ["param1","param2","param3"]

2、访问

1)用索引来访问,索引从0开始

索引不可以越界,否则会报错,最后一个元素的索引是len(city) - 1
2)还可以从后开始访问 最后一个元素的索引为-1 依次类推,第一个元素的索引为-len(city)
>>> city[-1]
>>> '广州'

3、元素的追加

4、元素的插入

在city的索引1处增加 重庆
>>> city.insert(1,'重庆')
>>> city
>>> ['北京', '重庆', '上海', '广州', '南京']

5、元素的删除
1)删除末尾

2)删除指定位置元素 pop(i),i为索引值

6、元素的替换

7、二维list

访问的时候 我们就可以直接 city[1][0] city[1][1]来访问 其中的元素值

二、tuple(元组)

tupe和list的最大的区别就是 tuple一旦被创建 就无法修改

1、定义

2、访问
和list是一样的 country[0],country[1]。由于tuple是不可变的,所以没有append 和insert 函数

3、 一个元素的tuple

我们发现 当tuple的元素只有一个元素的时候,python会认为括号就是小括号的功能,就会按照整数或者字符串解析,为了解决这个问题,python规定这种情况 在后面加一个逗号','就可以

4、 tuple的指向不变

你会惊讶,怎么可以变了呢??
其实在python内部,c[0],c[1]指向 1 和 2,而c[2]是指向的一个list对象,其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变.

⑧ Python 怎么除去list中的重复值以下是不正确的,结果是[1, 1, 2, 3, 4, 4, 5],为什么

需要执行两次une(a)才能去除
改了一下代码,自己跑一下下面的两端代码就应该知道为什么了,效果是一样的
>>>a=[1,1,1,1,2,3,3,3,4,4,4,4,5,5]
>>>def une(lst):
for i in lst:
print 'i=',i
print 'count('+str(i)+')='+str(lst.count(i))
if lst.count(i) > 1:
lst.remove(i)
print 'a=',a
print '-----------------------------------------'
>>>une(a)
>>>a=[1,1,1,1,2,3,3,3,4,4,4,4,5,5]
>>>def une(lst):
num = len(lst)
n=0
for n in range(num):
#print 'n=',n
i = lst[n]
print 'i=',i
print 'count('+str(i)+')='+str(lst.count(i))
if lst.count(i) > 1:
lst.remove(i)
print 'a=',a
print '-----------------------------------------'
>>>une(a)

怎么改une不用我教了吧

⑨ python两个列表字典,用list1对比list2 保留list2中不含list1的数据

  1. 请问,怎样删除list2中和list1相同的数据?,然后得到一个新的列表数据
    这个是可以通过得到的
    list3=[item for item in list2 if item not in list1]

  2. 以title为准,主要是想筛掉list1中的内容。list3是list1剩下的,不包含list2中的数据

    这个是可以通过得到

    list3 = [item for item in list1 if item not in list2]

⑩ python中list表示什么

list是python语言中的基本数据类型列表,使用[]表示;列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表,如下:
ak = [1, '67',true,[23,45,67]]

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:582
制作脚本网站 发布:2025-10-20 08:17:34 浏览:876
python中的init方法 发布:2025-10-20 08:17:33 浏览:571
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:757
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:673
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1000
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:244
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:103
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:795
python股票数据获取 发布:2025-10-20 07:39:44 浏览:701