Python中的列表变得非常复杂

时间:2015-04-20 01:45:33

标签: python

我有一个简单的函数,它将2D列表作为参数:

def get_noise_estimate(imag_array):
    temp = []

    temp.append(imag_array[:20])
    temp.append(imag_array[-20:])

在一个示例实例中,它有305个元素,每个元素有129个元素。我想这里有305列,每列有129行。我使用调试器找到了这些东西:

>>> len(imag_array)
305

>>> len(imag_array[0])
129

当我获得数组的前20个和后20个'列'并将其附加到temp时,我得到以下内容:

>>> len(temp)
2
>>> len(temp[0])
20
>>> len(temp[1])
20
>>> len(temp[0][0])
129

我的temp列表变得非常混乱。我希望len(temp)等于40而不是20个20块。为了说明我的意思,我将展示如何在Java中做类似的事情:

int[] temp = new int[40];

for(int i = 0; i < 20; i++){
    temp[i] = imag_array[i];
}

for(int i = 0; i < 20; i++){
   temp[i+20] = imag_array[imag_array.length-i]
}

以上是我的头脑,但我希望它能说明我的目标。

2 个答案:

答案 0 :(得分:7)

变化:

temp.append(imag_array[:20])
temp.append(imag_array[-20:])

temp.extend(imag_array[:20])
temp.extend(imag_array[-20:])

append命令添加了一些内容作为temp的最后一个元素。所以它使temp的第一个元素成为列表imag_array[:20]extend获取参数中列表的所有元素,并将每个元素添加到列表的末尾。

(并注意Jay的答案:temp = imag_array[:20]+imag_array[-20:]实际上更清晰 - 它不需要预定义temp并避免使用.append

答案 1 :(得分:3)

temp = imag_array[:20] + imag_array[-20:]