Python二维数组修改指定元素时全部行同步变更,求解决方案
问题原因与解决办法
问题根源
你用text=[[' ']*dlin]*hi创建二维数组时,实际上是把同一个列表对象重复了hi次。也就是说,数组里的每一行都指向内存中同一个列表,所以修改text[1][2]时,所有行的对应位置都会跟着改变——因为它们本质上是同一个列表。
解决方法
改用列表推导式创建二维数组,这样每一行都会生成一个独立的新列表:
sim = str(input('Введите символ для перемещения- ')) dlin = int(input('Введите количество строк в длину- ')) hi = int(input('Введите количество строк в высотку- ')) # 用列表推导式生成独立的行 text = [[' '] * dlin for _ in range(hi)] text[1][2] = sim for i in text: print(i)
原理说明
[[' ']*dlin for _ in range(hi)]会循环hi次,每次都生成一个新的[' ']*dlin列表,所以数组里的每一行都是独立的对象,修改其中一行的元素不会影响其他行。
内容的提问来源于stack exchange,提问作者ERHA
相关产品推荐
相关产品推荐

