- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 Spyder IDE 上测试了以下 python 代码。认为它会输出二维数组 q
从 q[0][0]
增加到 0..31至 q[3][7]
.但它实际上返回 q 为:
[[24, 25, 26, 27, 28, 29, 30, 31], [24, 25, 26, 27, 28, 29, 30, 31], [24, 25, 26, 27, 28, 29, 30, 31], [24, 25, 26, 27, 28, 29, 30, 31]].
代码:
q=[[0]*8]*4
for i in range(4):
for j in range(8):
q[i][j] = 8*i+j
print q
知道这里发生了什么吗?我一步步调试。它显示每一行的更新将与所有其他行同步,这与我对其他编程语言的体验完全不同。
最佳答案
q=[somelist]*4
创建一个包含四个相同项目的列表,列表 somelist
。因此,例如,q[0]
和 q[1]
引用同一个对象。
因此,在嵌套的 for 循环中,q[i]
引用相同的列表,而不管 i
的值如何。
修复:
q = [[0]*8 for _ in range(4)]
列表理解评估 [0]*8
4 次不同的时间,产生 4 个不同的列表。
下面是这个陷阱的快速演示:
In [14]: q=[[0]*8]*4
您可能认为您只更新了第二行中的第一个元素:
In [15]: q[1][0] = 100
但您实际上最终改变了每一行 中的第一个元素:
In [16]: q
Out[16]:
[[100, 0, 0, 0, 0, 0, 0, 0],
[100, 0, 0, 0, 0, 0, 0, 0],
[100, 0, 0, 0, 0, 0, 0, 0],
[100, 0, 0, 0, 0, 0, 0, 0]]
关于python - 关于双循环的简单python代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12236148/
我有一个关于在 R 中执行双循环的明显问题,但无法在此网站上找到答案。我正在使用以下代码: mu <- c(0, .2, .5, .8) sco <- matrix(nrow = 50, ncol =
是否有可能循环 2 列表与另一个大小最小的列表“重新循环”? 例子: list = [1,2,3,4,5,6,7,8,10] list2 = [a,b] newlist = [] for numb
我有一个这样的对象 objs: - { key1: value1, key2: [value2, value3] } - { key1: value4, key2: [value5,
我正在处理一个目录,其中一些列表具有与其关联的图像,而其他列表则没有。我想知道如何在循环中编写循环来获取结果。 例如,用户选择他们想要结果的州,查询将转到数据库,请求该州的所有列表。 Sorry, t
我在 2 个 for 循环中有复选框。我想强制它们表现得像单选按钮一样。每个 Q(第一个循环)只能选择一个选项。我有一个和平的代码,但它不起作用。如何更改? script type="text/jav
我遵循了 this post 的答案,但是,这似乎对我不起作用。我有一个第一个二维数组,我想在每个外循环之间超时,而不是在外循环中超时。 这是 this Fiddle 的片段显示我尝试过的三种方法之一
我使用最小编辑距离算法来查找相似的字符串。 我的代码主题是在输入数据中找到爱好最接近的夫妇。 Hobby type A B C D E F G H I J K L M N O P Q R S T U
我正在尝试优化用于计算两个方阵元素的乘积的双和的代码。假设我们有两个大小为 n、W 和 V 的方阵。需要计算的对象是一个带有元素的向量B 简单来说:计算两个不同矩阵中两个不同行的逐元素乘积并求它们的和
我是一名优秀的程序员,十分优秀!