Accessing elements in a nested list

牧云@^-^@ 提交于 2019-12-24 10:38:33

问题


I have elements in a nested list called "train_data" like in the example:

[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]

I would like to access all rows with the first 8 columns (all but the last one), and all rows with only the last column. I need to this without for loops, in a single line of code.

I tried something like this:

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

but this gives me the same result:

[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]

Could someone help me please?

Edit:

Sorry, the expected output for the first query is:

[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]

and for the second query is:

[0]
[0]
[1]

回答1:


I think you are expecting this

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]



回答2:


you can use [:-1] slicing for get all elements except the last one !

>>> 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]]



回答3:


Is there really a good reason to do this in a oneliner? I mean why is that a requirement?

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

But even if the loop is not explicit with a for, it's implicit as a comprehensive list...

edit: 1 → -1 for second line of code, my mistake



来源:https://stackoverflow.com/questions/27521956/accessing-elements-in-a-nested-list

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!