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