首页 > 解决方案 > 字符串列表列表的奇怪更新

问题描述

我偶然发现了 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,但我想知道为什么会发生上述奇怪的更新。谢谢!

标签: pythonstringlistupdates

解决方案


推荐阅读