如何从列表中的列表中获取有用数据?

时间:2014-04-23 20:58:20

标签: python algorithm list

也许问题不是很清楚。这是一个例子。 我有一个列表,数据结构如下:

[[221.86797965649234, 490], [306.5453090728297, 400], [307.3621570649666, 842]]

如何使用有效的方法获取新列表,即[490,400,842]?

目前,我的方法是

List = [[221.86797965649234, 490], [306.5453090728297, 400], [307.3621570649666, 842]]
newList = []
for n in List:
    newList.append(n[1])

如果原始列表有超过百万个项目,那将非常慢。有没有有效的方法?

5 个答案:

答案 0 :(得分:3)

使用list comprehensions

>>> List = [[221.86797965649234, 490], [306.5453090728297, 400], [307.3621570649666, 842]]
>>> [l[1] for l in List]
[490, 400, 842]

如果您的列表有超过一百万个项目,并且测量的性能确实成为问题,您可能希望将其存储在数据库中或使用其他一些方法来让您更仔细地控制对它的访问。

答案 1 :(得分:0)

使用列表理解:

>>> myList = [[221.86797965649234, 490], [306.5453090728297, 400], [307.3621570649666, 842]]
>>> [x[1] for x in myList]
[490, 400, 842]

答案 2 :(得分:0)

如果您想要最后一项,那么您可以使用:

>>> list
[[221.86797965649234, 490], [306.5453090728297, 400], [307.3621570649666, 842]]
>>> [x[-1] for x in list]
[490, 400, 842]

答案 3 :(得分:0)

尝试列表生成器:

newListGen = (item[1] for item it List)

这样做的好处是只有在请求项目后才会生成数据项。

更大的问题是,你从哪里获得原始的百万长列表,以及你需要做什么 - 很可能有更好的数据结构用于这样一个庞大的数据集。

答案 4 :(得分:0)

您可以使用list comprehension

newList = [n[1] for n in List]

另外,请注意不要将变量名称大写。例如,list优于List。但是,也不要使用已经在Python中表达某些东西的名称。因此,list并不是一个好名字。

PEP 8是一个很好的风格指南。