“列表索引必须是整数,而不是元组”,但之前有效吗?

时间:2014-08-26 04:44:04

标签: python

我有一份表格的第二个清单:

d = [[0.87768026489137663, -0.42848220833223599],
[0.87770426313019434, -0.428411425505765],
[0.87796388044104012, -0.42873867479872063],
[0.87801587662514491, -0.42860583582101786],
[0.87794315468933382, -0.42847396647067809]]

我希望从中获得一个列,我之前在使用d [:,0]或d [:,1]的其他程序中完成了此操作,并且它完美地运行。但是现在当我尝试我得到错误时:列表索引必须是整数,而不是元组。我知道这一定是一个非常简单的解决办法,但我不确定是什么问题。如果重要的话我会使用python 3.4。

3 个答案:

答案 0 :(得分:1)

您有一份清单清单。您要做的是遍历列表列表,对于每个子列表,如果您想要第一列,请选择第一项,如果您想要第二列,则选择第二项,等等。会这样做:

column = [x[0] for x in d]

请注意x[0]选择子列表中的第一项。如果你想要第二个项目,请选择x[1]等。通常,如果你想要在你的2d列表中的n列(称之为d),那么获取该列的代码是:

column = [x[n] for x in d]

答案 1 :(得分:0)

在python中你不能使用矩阵中的R符号来获取列,你可以使用numpy lib来做到这一点。如果你想使用纯python获取列i,只需执行:

columns   = map(list,zip(d))  
column_i  = columns [i] #i is the column that you want

实施例

d = [[1,2],[3,4] ]
new_d = zip(d)
>> [(1,3),(2,4)]
map(list,new_d)
>> [[1,3],[2,4]]

答案 2 :(得分:0)

在我看来,您将使用列表中的数据进行进一步计算。处理这些列表我最喜欢的是" numpy"。如果导入numpy模块,则可以像访问建议那样访问数据:

import numpy as np

d = np.array([[0.87768026489137663, -0.42848220833223599],
              [0.87770426313019434, -0.428411425505765],
              [0.87796388044104012, -0.42873867479872063],
              [0.87801587662514491, -0.42860583582101786],
              [0.87794315468933382, -0.42847396647067809]])

d[:,1]

输出:

array([-0.42848221, -0.42841143, -0.42873867, -0.42860584, -0.42847397])

我发现将numpy用于此类数据要容易得多,因为它比列表推导更直观。 希望这会有所帮助。