从子列表的特定元素创建列表

时间:2013-11-30 15:35:17

标签: python list indexing slice sublist

我的头衔可能令人难以置信,所以我只举一个例子。对于以下列表:

 x = [ [1,2,3], [4,5,6], [7,8,9] ]

因此,如果您希望索引为1,则结果列表为:

 [2,5,8]

有一个简短的方法吗?显然你可以遍历外部列表并简单地获取索引1的每个元素,但有没有简单的方法可以在一行中执行此操作,例如,使用slce表示法?

我知道可以在一行中执行以下操作:

 list(map(lambda f : f[1], x))

但这正是我上面所描述的(仅使用隐式循环)。

如果有帮助,可以安全地假设所有元素都是可索引的。

3 个答案:

答案 0 :(得分:3)

无论你做什么,总会总是隐式循环。

你也可以使用zip(看看ma!no loops(no for keyword)):

>>> zip(*x)[0]
(1, 4, 7)
>>> zip(*x)[1]
(2, 5, 8)
>>> zip(*x)[2]
(3, 6, 9)

或列表推导:

>>> x = [ [1,2,3], [4,5,6], [7,8,9] ]
>>> l = [var[1] for var in x]
>>> l
[2, 5, 8]

如果你想要一些其他索引:

>>> [var[0] for var in x]
[1, 4, 7]
>>> [var[2] for var in x]
[3, 6, 9]

答案 1 :(得分:2)

In [3]: x = [ [1,2,3], [4,5,6], [7,8,9] ]

In [4]: import operator

In [5]: map(operator.itemgetter(1), x)
Out[5]: [2, 5, 8]

答案 2 :(得分:0)

要像这样直接索引数组,您可能希望使用numpy.array。然后你可以使用切片表示法。