Python二维数组存储异常求助:化合物经验公式求解代码排查
问题分析与修复方案
- 你的代码中创建二维列表的方式
data = [[""]*5]*n存在核心问题:这种写法会让列表中的所有子列表指向同一个内存对象。也就是说,当你修改data[i][j]时,所有行的第j个元素都会被同步修改,因为它们本质上是同一个列表的引用,这就是输出不符合预期的原因。
修复后的代码如下:
n = int(input("Enter the number of elements: ")) # 用列表推导式创建独立的子列表,避免引用复用 data = [["" for _ in range(5)] for _ in range(n)] for i in range(n): print("Enter the symbol of element, percentage and atomic number: ") for j in range(3): data[i][j] = input() print(data)
- 列表推导式
[["" for _ in range(5)] for _ in range(n)]会为每一行单独生成一个新的长度为5的列表,各行之间完全独立,输入的数据就能正确存储到对应的位置,不会出现所有行数据同步变化的问题。
内容的提问来源于stack exchange,提问作者Rishith Raj Raizada
相关产品推荐
相关产品推荐

