python元组元素删除_当第一个元素是dupli时,从列表中删除元组的最python方法

这篇博客探讨了在Python中查找列表中重复元组的两种方法:通过转换为字典和利用OrderedDict。第一种方法在不关心返回哪个重复项时速度更快,而第二种方法在保持原始顺序的同时找到第一轮出现的重复项。文中还进行了性能测试,显示第一种方法比其他方法快约15倍。此外,还提到了一种更高效的迭代解决方案,通过集合和列表推导式来查找重复项。
摘要由CSDN通过智能技术生成

如果您不关心返回的是哪一个元组的重复项,则可以始终将列表转换为字典并返回:>>> orig = [(1,2),(1,3),(2,3),(3,3)]

>>> list(dict(orig).items())

[(1, 3), (2, 3), (3, 3)]

如果您想返回第一轮元组,可以反转列表两次并使用^{},如下所示:

^{pr2}$

这些并不是最有效的解决方案(,如果这很重要的话),但是它们确实是很好的惯用的一行程序。在

一些基准测试

注意速度上的差异,如果您不在乎返回哪一个元组,第一个选项的效率要高得多:>>> import timeit

>>> setup = '''

orig = [(1,2),(1,3),(2,3),(3,3)]

'''

>>> print (min(timeit.Timer('(list(dict(orig).items()))', setup=setup).repeat(7, 1000)))

0.0015771419037069459

与>>>setup = '''

orig = [(1,2),(1,3),(2,3),(3,3)]

from collections import OrderedDict

'''

>>> print (min(timeit.Timer('(list(OrderedDict(orig[::-1]).items())[::-1])',

setup=setup).repeat(7, 1000)))

0.024554947372323

根据这些速度测试,第一种选择速度快了近15倍。在

尽管如此,Saksham's answer也是O(n),并以高效的方式粉碎这些字典方法:>>> setup = '''

orig = [(1,2),(1,3),(2,3),(3,3)]

newlist = []

seen = set()

def fun():

for (a, b) in orig:

if not a in seen:

newlist.append((a, b))

seen.add(a)

return newlist

'''

>>> print (min(timeit.Timer('fun()', setup=setup).repeat(7, 1000)))

0.0004833390384996095

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值