Python: 如何用map获取元组的第一个元素
我有一个包含元组的元组,我想把每个元组里的第一个值放到一个集合里。我觉得用map()函数来实现这个目标不错,但我找不到简单的方法来访问元组里的第一个元素。举个例子,我有这个元组((1,), (3,))
。我想做的事情类似于set(map([0], ((1,), (3,))))
(这里[0]
是用来访问第一个元素的),这样我就能得到一个包含1和3的集合。我唯一想到的方法是先定义一个函数:def first(t): return t[0]
。有没有办法在一行代码里做到这一点,而不需要先声明这个函数呢?
8 个回答
4
在编程中,有时候我们需要把一些数据放在一个地方,方便我们后续使用。这就像把书放在书架上,随时可以拿出来看。
有些时候,我们会遇到一些问题,比如我们想要把数据从一个地方移动到另一个地方,或者我们想要在不同的地方使用同样的数据。这就像你想把书从一个书架搬到另一个书架,或者把同一本书放在多个地方,以便随时都能找到。
在这些情况下,我们需要用到一些工具和方法,来帮助我们更好地管理这些数据。就像我们需要一个搬家工具,才能把书搬得更轻松。
总之,编程中的数据管理就像整理书籍一样,需要一些技巧和工具,才能让我们的工作变得更加高效。
my_set = {x[0] for x in TUPLES}
19
from operator import itemgetter
map(itemgetter(0), ((1,), (3,)))
虽然列表推导式通常更容易理解,但 itemgetter
更接近你想要的效果。而且它的运行速度也稍微快一些:
>>> from timeit import timeit
>>> setup = 'from operator import itemgetter; lst=( ("a",), ("b",), (1,), (2,))'
>>> timeit('map(itemgetter(0), lst)', setup=setup)
0.13061050399846863
>>> timeit('[i[0] for i in lst]', setup=setup)
0.20302422800159547
21
可以使用列表推导式:
data = ((1,), (3,))
print([x[0] for x in data])