我有一个简单的函数,它将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]
}
以上是我的头脑,但我希望它能说明我的目标。
答案 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:]