我试图从元组列表中获取第n个元素。
我有这样的东西:
elements = [(1,1,1),(2,3,7),(3,5,10)]
我希望仅提取每个元组的第二个元素到列表中:
seconds = [1, 3, 5]
我知道它可以用for
循环完成,但我想知道是否有另一种方法,因为我有成千上万的元组。
我知道这可以用FOR来完成,但我想知道是否还有其他方法
还有另外一种方法。你也可以用map和itemgetter来完成它:
>>> from operator import itemgetter
>>> map(itemgetter(1), elements)
尽管如此,它仍然在内部执行循环,并且比列表理解稍慢。
setup = 'elements = [(1,1,1) for _ in range(100000)];from operator import itemgetter'
method1 = '[x[1] for x in elements]'
method2 = 'map(itemgetter(1), elements)'
import timeit
t = timeit.Timer(method1, setup)
print('Method 1: ' + str(t.timeit(100)))
t = timeit.Timer(method2, setup)
print('Method 2: ' + str(t.timeit(100)))
结果:
方法1:1.25699996948
方法2:1.46600008011
如果你需要遍历一个列表然后使用一个for
很好。