我有这种格式的元组列表:
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)
答案 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)