访问嵌套列表中的元素

时间:2014-12-17 09:16:05

标签: python list nested-lists

我在嵌套列表中有一些名为" train_data"比如示例:

[0] [0.935897, 1.0, 1.0, 0.928772, 0.053629, 0.0, 39.559883, 0.009494, 0]
[1] [0.467681, 1.0, 1.0, 0.778987, 0.069336, 0.0, 56.571999, 0.024675, 0]
[2] [0.393258, 1.0, 1.0, 0.843201, 0.068779, 0.0, 66.866669, 0.069206, 1]

我想访问前8列的所有行(除最后一列外的所有行),以及仅包含最后一列的所有行。我需要在没有for循环的情况下,在一行代码中。

我试过这样的事情:

print train_data[0][:]
print train_data[:][0]

但这给了我相同的结果:

[0.935897, 1.0, 1.0, 0.928772, 0.053629, 0.0, 39.559883, 0.009494, 0]
[0.935897, 1.0, 1.0, 0.928772, 0.053629, 0.0, 39.559883, 0.009494, 0]

有人能帮帮我吗?

编辑:

抱歉,第一个查询的预期输出是:

[0.935897, 1.0, 1.0, 0.928772, 0.053629, 0.0, 39.559883, 0.009494]
[0.467681, 1.0, 1.0, 0.778987, 0.069336, 0.0, 56.571999, 0.024675]
[0.393258, 1.0, 1.0, 0.843201, 0.068779, 0.0, 66.866669, 0.069206]

,第二个查询是:

[0]
[0]
[1]

3 个答案:

答案 0 :(得分:3)

你可以使用[:-1]切片来获取除最后一个之外的所有元素!

>>> l1=[0.935897, 1.0, 1.0, 0.928772, 0.053629, 0.0, 39.559883, 0.009494, 0]
>>> l2=[0.467681, 1.0, 1.0, 0.778987, 0.069336, 0.0, 56.571999, 0.024675, 0]
>>> l3=[0.393258, 1.0, 1.0, 0.843201, 0.068779, 0.0, 66.866669, 0.069206, 1]
>>> l=[l1,l2,l3]
>>> [i[:-1] for i in l]
[[0.935897, 1.0, 1.0, 0.928772, 0.053629, 0.0, 39.559883, 0.009494], [0.467681, 1.0, 1.0, 0.778987, 0.069336, 0.0, 56.571999, 0.024675], [0.393258, 1.0, 1.0, 0.843201, 0.068779, 0.0, 66.866669, 0.069206]]

答案 1 :(得分:2)

在oneliner中有这么好的理由吗?我的意思是为什么这是一个要求?

print [i[:-1] for i in l]  # All rows with all cols - 1
print [i[-1] for i in l]  # All rows with last col

但即使循环没有明确表示for,它也隐含为一个综合列表...

编辑:1→-1表示第二行代码,我的错误

答案 2 :(得分:1)

我认为你期待这个

L1 = [x[0:-1] for x in train_data]
L2 = [x[-1] for x in train_data]

for x in L1:
    print x

for x in L2:
    print [x]