天天看點

python元組元素删除_當第一個元素是dupli時,從清單中删除元組的最python方法

如果您不關心傳回的是哪一個元組的重複項,則可以始終将清單轉換為字典并傳回:>>> 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