我的头衔可能令人难以置信,所以我只举一个例子。对于以下列表:
x = [ [1,2,3], [4,5,6], [7,8,9] ]
因此,如果您希望索引为1,则结果列表为:
[2,5,8]
有一个简短的方法吗?显然你可以遍历外部列表并简单地获取索引1的每个元素,但有没有简单的方法可以在一行中执行此操作,例如,使用slce表示法?
我知道可以在一行中执行以下操作:
list(map(lambda f : f[1], x))
但这正是我上面所描述的(仅使用隐式循环)。
如果有帮助,可以安全地假设所有元素都是可索引的。
答案 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。然后你可以使用切片表示法。