Python中文
首页
教程
问答
标签
搜索
登录
注册
创建一个列表的列表,意外地通过乘法生成内部列表之间保持连接。
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>假设我想创建一个列表列表,稍后再填充,如下所示:</p> <pre><code>[['', ''], ['', ''], ['', '']] </code></pre> <p>我可以这样创造:</p> <pre><code>rows=3 cols=2 A=['']*cols B=[A[:]]*rows </code></pre> <p>但是,内部列表是相同的对象,如图所示:</p> <pre><code>B[0][0]='!' print (B) </code></pre> <p>输出:</p> <pre><code>[['!', ''], ['!', ''], ['!', '']] </code></pre> <p>即使我使用了<code>B=[A[:]]*rows</code>而不是<code>B=[A]*rows</code>,也会出现这种情况;使用<code>B=[A][:]*rows</code>并不能解决问题。你知道吗</p> <p>如果<code>A[:]</code>应该通过切片有效地创建完整副本(而不仅仅是引用),那么为什么会发生这种情况?你知道吗</p> <p>附言</p> <p>显然,这可以很容易地解决,例如:</p> <pre><code>this_text=[] temp=[] for i in range(cols): A.append('') for i in range(rows): B.append(A[:]) </code></pre> <p>我的目的是增进理解,而不是创建这个具体的列表。你知道吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>这将防止<code>B</code>成为副本列表,因为它会为每个<code>x</code>创建一个新的<code>A[:]</code>:</p> <pre><code>B=[A[:] for x in range(rows)] </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
jupyter运行一个旧的pytorch版本
7 回答
Jupyter运行不同版本的卸载库?
1 回答
Jupyter运行指定的键盘快捷键
9 回答
Jupyter通过.local文件“逃逸”virtualenv。我该如何缓解这种情况?
5 回答
Jupyter重新加载自定义样式
10 回答
Jupyter错误:“没有名为Jupyter_core.paths的模块”
1 回答
jupyter错误:无法在随机林中将决策树视为png
9 回答
Jupyter错误'内核似乎已经死亡,它将自动重新启动'为一个给定的代码块
7 回答
Jupyter错误地用阿拉伯语和字母数字元素显示Python列表
3 回答
Jupyter隐藏数据帧索引,但保留原始样式
9 回答
Jupyter集线器:启动器中出现致命错误。。。系统找不到指定的文件
1 回答
Jupyther中相同值的相同哈希,但导出到Bigquery时不相同
1 回答
Jupy上Python的读/写访问问题
6 回答
jupy上没有模块cv
4 回答
Jupy上的排序错误
3 回答
Jupy中bqplot图形的紧凑布局
9 回答
Jupy中matplotlib plot的连续更新
8 回答
Jupy中Numpy函数的文档
6 回答
Jupy中Pandas的自动完成问题
2 回答
jupy中Qt后端的Matplotlib动画
2 回答