返回列表列表中每个列表的一系列元素

时间:2010-10-29 15:54:25

标签: python list-comprehension

从列表mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]我如何获得由每个“内部”列表e.i的前两个元素组成的新列表。 newlist = [[1, 2], [4, 5], [7, 8]]?是否有一个单行程可以有效地执行此操作(对于大型列表列表)?

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分: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

答案 2 :(得分:1)

使用列表理解。

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