返回列表中的每个列表的元素范围
问题描述:
从列表mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
我如何获得由每个“内部”列表e.i的前两个元素组成的列表的新列表。 newlist = [[1, 2], [4, 5], [7, 8]]
?有没有一种方法可以有效地完成这项工作(对于大型列表清单)?返回列表中的每个列表的元素范围
答
最简单的方法可能是使用列表理解:
newlist = [sublist[:2] for sublist in mylist]
答
使用列表理解。
newlist = [x[:2] for x in mylist]
答
快速回答:
first_two = [sublist[:2] for sublist in mylist]
如果有一个元组列表是确定的,那么更快的答案(2倍通过我的测量):
import operator
map(operator.itemgetter(0, 1), mylist)
测量:
t = timeit.Timer("[i[:2] for i in ll]", "ll = [[i, i + 1, i + 2] for i in xrange(1000)]")
t.timeit(10000)
>>> 2.2732808589935303
t2 = timeit.Timer("map(operator.itemgetter(0, 1), ll)", "import operator; ll = [[i, i + 1, i + 2] for i in xrange(1000)]")
t2.timeit(10000)
>>> 1.3041009902954102