python元组的删除_python – 从元组列表中删除值

我有一个元组列表,我只想返回第二列数据,只返回唯一值

mytuple = [('Andrew','Andrew@gmail.com','20'),('Jim',"Jim@gmail.com",'12'),("Sarah","Sarah@gmail.com",'43'),("Jim","Jim@gmail.com",'15'),("Andrew","Andrew@gmail.com",'56')]

期望的输出:

['Andrew@gmail.com','Jim@gmail.com','Sarah@gmail.com']

我的想法是遍历列表并将第二列中的项添加到新列表中,然后使用以下代码.在我沿着这条路走得太远之前,我知道有更好的方法可以做到这一点.

from collections import Counter

cnt = Counter(mytuple_new)

unique_mytuple_new = [k for k, v in cnt.iteritems() if v > 1]

解决方法:

你可以使用zip功能:

>>> set(zip(*mytuple)[1])

set(['Sarah@gmail.com', 'Jim@gmail.com', 'Andrew@gmail.com'])

或者作为一种性能较低的方法,您可以使用map和operator.itemgetter并使用set来获取唯一的元组:

>>> from operator import itemgetter

>>> tuple(set(map(lambda x:itemgetter(1)(x),mytuple)))

('Sarah@gmail.com', 'Jim@gmail.com', 'Andrew@gmail.com')

一些答案的基准:

我的答案 :

s = """\

mytuple = [('Andrew','Andrew@gmail.com','20'),('Jim',"Jim@gmail.com",'12'),("Sarah","Sarah@gmail.com",'43'),("Jim","Jim@gmail.com",'15'),("Andrew","Andrew@gmail.com",'56')]

set(zip(*mytuple)[1])

"""

print timeit.timeit(stmt=s, number=100000)

0.0740020275116

icodez答案:

s = """\

mytuple = [('Andrew','Andrew@gmail.com','20'),('Jim',"Jim@gmail.com",'12'),("Sarah","Sarah@gmail.com",'43'),("Jim","Jim@gmail.com",'15'),("Andrew","Andrew@gmail.com",'56')]

seen = set()

[x[1] for x in mytuple if x[1] not in seen and not seen.add(x[1])]

"""

print timeit.timeit(stmt=s, number=100000)

0.0938332080841

哈桑的回答是:

s = """\

mytuple = [('Andrew','Andrew@gmail.com','20'),('Jim',"Jim@gmail.com",'12'),("Sarah","Sarah@gmail.com",'43'),("Jim","Jim@gmail.com",'15'),("Andrew","Andrew@gmail.com",'56')]

set([k[1] for k in mytuple])

"""

print timeit.timeit(stmt=s, number=100000)

0.0699651241302

Adem的回答:

s = """

from itertools import izip

mytuple = [('Andrew','Andrew@gmail.com','20'),('Jim',"Jim@gmail.com",'12'),("Sarah","Sarah@gmail.com",'43'),("Jim","Jim@gmail.com",'15'),("Andrew","Andrew@gmail.com",'56')]

set(map(lambda x: x[1], mytuple))

"""

print timeit.timeit(stmt=s, number=100000)

0.237300872803 !!!

标签:python,list,python-2-7,tuples,unique

来源: https://codeday.me/bug/20190824/1712714.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值