blc*_*llo 13 python map-function
我有一个元组元组,我想把每个元组中的第一个值放入一个集合中.我认为使用map()将是一个很好的方法,这是唯一的事情是我找不到一个简单的方法来访问元组中的第一个元素.所以例如我有元组((1,), (3,)).我想做一些像set(map([0], ((1,), (3,))))(在哪里[0]访问第0个元素)得到一个包含1和3的集合.我能想到的唯一方法是定义一个函数:def first(t): return t[0].无论如何在一行中执行此操作而不必声明函数?
Win*_*ert 17
使用列表理解:
data = ((1,), (3,))
print [x[0] for x in data]
Run Code Online (Sandbox Code Playgroud)
Ste*_*ard 12
from operator import itemgetter
map(itemgetter(0), ((1,), (3,)))
Run Code Online (Sandbox Code Playgroud)
虽然列表推导通常更具可读性,但itemgetter最接近他的要求.
时间信息:
>>> from timeit import Timer
>>> mapped = Timer(setup='from operator import itemgetter\nlst=( ("a",), ("b",), (1,), (2,))', stmt='map(itemgetter(0), lst)')
>>> comprehended = Timer(setup='lst=( ("a",), ("b",), (1,), (2,))', stmt='[i[0] for i in lst]')
>>> comprehended.repeat()
[0.5402599483924249, 0.47599876684973275, 0.48340872102501464]
>>> mapped.repeat()
[0.4333492937609478, 0.31100689245737456, 0.3106918944053909]
Run Code Online (Sandbox Code Playgroud)