- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我不明白为什么下面的代码会有这样的行为。
import numpy as np
nbr_arrays = 4
nbr_fields_per_array = 3
nbr_subfields_per_field = 2
# pre-allocate zeros list
zeros = np.zeros(nbr_subfields_per_field)
data = []
for array in range(nbr_arrays):
# pre-allocate the subarray
empty_array = []
for empty_array_index in range(nbr_fields_per_array):
empty_array.append(zeros)
# append pre subarray to data
data.append(empty_array)
# fill up data
for j in range(nbr_fields_per_array):
for k in range(nbr_subfields_per_field):
data[array][j][k] = j*k*array
生成的输出data
现在读取:
[[array([ 0., 6.]), array([ 0., 6.]), array([ 0., 6.])],
[array([ 0., 6.]), array([ 0., 6.]), array([ 0., 6.])],
[array([ 0., 6.]), array([ 0., 6.]), array([ 0., 6.])],
[array([ 0., 6.]), array([ 0., 6.]), array([ 0., 6.])]]
甚至零
读起来也完全不同:
array([ 0., 6.])
如果我查看不同列表的标识,这就是我得到的:
id(data[0][0])
Out[72]: 45790208
id(data[1][0])
Out[66]: 45790208
id(data[2][0])
Out[67]: 45790208
id(data[3][0])
Out[68]: 45790208
id(zeros)
Out[69]: 45790208
为什么所有的引用文献都是一样的?为什么zero
突然包含非零值?
如果有人可以向我解释这里到底发生了什么,以及我如何修改代码才能看到预期的行为(输出),我将非常感激.
编辑:
不使用零
,而是使用[[0]*nbr_subfields_per_field for x in range(nbr_fields_per_array)]
而不是给我预期的结果。但为什么?为什么原来的代码不起作用?修改后的代码有效:
data = []
for array in range(nbr_arrays):
empty_array = [[0]*nbr_subfields_per_field for x in range(nbr_fields_per_array)]
''' this is causing the weird behaviour
empty_array = []
for empty_array_index in range(nbr_fields_per_array):
empty_array.append(zeros)
'''
data.append(empty_array)
for j in range(nbr_fields_per_array):
for k in range(nbr_subfields_per_field):
data[array][j][k] = j*k*array
最佳答案
# pre-allocate zeros list
zeros = np.zeros(nbr_subfields_per_field)
这将创建一个对象。
for empty_array_index in range(nbr_fields_per_array):
empty_array.append(zeros)
这会不断附加相同的对象。
停止预分配。
关于python - 不理解python的三维列表的行为(对子列表的引用是相同的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10729049/
我在 excel 中有一个具有以下结构的主表: 如何使用 vlookup 功能将其转换为第二张图片所示? (在黄色细胞中起作用)。 现在涉及三个键:白天、用户和数据类型(ADP_ERQ、ADP_SO)
我有一个函数可以搜索一些数据并返回一个 vector : vector findMyData(int byID) { vector tempVect; // do some search...
我正在尝试构建一个 3D Javascript 数组,但我不确定该怎么做,基本上我有 3 个数组,Provinces、Cities 和 Malls 都是连续的,所以我想创建一个 3D 数组来存储所有数
很明显,我提出了一个需要头脑 Storm 的问题。那,或者我太菜鸟了,看不到任何明显的答案: 如何实现一个标签系统,其中每个标签与网站的每个用户都有特定的关系? 我试图实现的一个非常简单的例子是系统跟
我是一名优秀的程序员,十分优秀!