python - 字符串列表列表的奇怪更新
问题描述
我偶然发现了 Python 3.7.3 中字符串列表的一个有趣行为。我定义列表列表如下,并更新一个元素:
s = [['']*2]*2
s[1][1] = 'why?'
print(s)
它打印:
[['', ''], ['', '']]
[['', 'why?'], ['', 'why?']]
我无法弄清楚为什么没有更新正确的元素。第一个想法是s = [[' ']*2]*2
用 4 个空格 =定义len('why?')
, 作为元素,但错误的更新仍然存在。明确地重新定义列表s
,并执行与上面相同的更新,我得到了正确的结果:
s = [['', ''], ['', '']]
s[1][1]= 'why?'
print(s)
[['', ''], ['', 'why?']]
我正在使用与大型热图相关的工具提示列表等列表。我可以避免将 n-spaces 列表转换为 a 的问题np.array
,但我想知道为什么会发生上述奇怪的更新。谢谢!
解决方案
推荐阅读
- laravel - 如何从选择输入 laravel 中获取多个选项
- javascript - 异步函数调用中的回调错误
- c - POSIX 线程 API 是如何版本化的,自 1995 年以来它是否已更新?
- angular - 在 Angular 模板语法中,当使用嵌套的 *ngFor(或 ngForOf)时,是否可以跟踪较低级别项目的绝对计数?
- python - SQL / SQLAlchemy 计数不同的日期
- vb.net - 拔下usb串口/串口时如何显示msgbox?
- html - 使用 DLL 从单独的项目渲染视图
- python - 如何按年扩展熊猫时间戳?
- mysql - mySQL 索引参数和限制
- mysql - 仅当表中不存在值时才将表单中的值插入我的数据库表中