迭代一个元组列表

时间:2016-06-01 06:05:05

标签: python list tuples

我有这种格式的元组列表:

my_list = [(1,4),(3,6),(10,7)]

我想打印每个tupple的第二个元素:

4,6,7

我可以访问这些值:

my_list[0][1]
my_list[1][1]
my_list[2][1]

但对于任何合理的大小列表来说,这不是一个合理的方法,现在,并使用列表理解:

[x[1] for x in my_list ]

是否有任何解决方案并不意味着使用循环? 类似的东西:

my_list[:][1]

我试着这样做,但得到了:

(3, 6)

2 个答案:

答案 0 :(得分:2)

[:]只创建列表的副本,因此复制的[1]索引。不,在NumPy阵列之外,技术上没有办法避免循环。循环可以在类似map()的函数中的C代码中完成,但无论如何都会成为循环。

例如,使用map()为输入列表中的每个元素应用一个callable:

map(lambda nested: nested[1], my_list)

from operator import itemgetter

map(itemgetter(1), my_list)

两者都在Python 2中工作,在Python 3中,您需要在map()调用中包装list()调用以驱动迭代。

无论如何,我发现列表理解在这里更清楚。

答案 1 :(得分:1)

正如python get list of tuples first index

中所述

尝试使用zip

my_list = [(1,4),(3,6),(10,7)]

print zip(*my_list)[1]

(4, 6, 7)