它会给我什么以及如何访问元素?

时间:2018-08-09 12:11:07

标签: python list

请看一下这段代码:

sig_array=[]
...
for i in range (0, 2):
        ....
        temp=[]
        for k in range (0, len (sig)):
            #print (k)
            temp.append(downsample(sig[k],sampl, new_freq))
        sig_array.append(temp)

换句话说,temp是一个数组列表(我的downsample函数,顾名思义,返回一个数组),然后temp将被聚合,这样是数组列表的列表!

我的问题是:如何处理(索引,...),是否有最简单的方法进行处理,即在循环中生成数组列表,但如何将其保留在数据结构中?

谢谢

1 个答案:

答案 0 :(得分:0)

关于索引编制,您只需要引用sig_array[0]sig_array[1][2]sig_array[3][0][2]等元素即可。

关于任何更好的数据结构,实际上仅取决于您的用例。正如@smagnan在评论中所说,您是否正在使用它轻松访问数据?矩阵处理?如果是这样,请查看numpy ndarrays您说您需要它来进行时间序列分析中的大数据。在这种情况下,使用pandas模块将非常有帮助(more info)。

此外,就像@Bazingaa所说的那样,您可以使用list理解(more info)来减少代码的详细程度:

sig_array = [ [downsample(sig[i],sampl, new_freq) for i in range (len(sig))] for _ in range(2)]

对于list的理解,最好从外部开始,从结尾开始。 for _ in range(2)将运行两次(由于看不到您在任何地方使用它,因此我将i替换为_。如果需要,请将_替换为相关变量名称)。在每次迭代中,它会将append的内部列表理解为sig_array。在内部listcomp内部,对于downsample()循环的每次迭代,list函数的结果将附加到临时for上,

这将与您的代码完全相同的输出,但是显然 way 更短:)