2010-10-29 96 views
1

从列表mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]我如何获得由每个“内部”列表e.i的前两个元素组成的列表的新列表。 newlist = [[1, 2], [4, 5], [7, 8]]?有没有一种方法可以有效地完成这项工作(对于大型列表清单)?返回列表中的每个列表的元素范围

回答

7

最简单的方法可能是使用列表理解:

newlist = [sublist[:2] for sublist in mylist] 
1

使用列表理解。

newlist = [x[:2] for x in mylist] 
3

快速回答:

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 
相关问题