【发布时间】:2017-04-22 15:14:35
【问题描述】:
我正在尝试在 Python 中创建一个 12x12 矩阵。我将所有位置设置为"High",然后尝试将一个特定位置设置为"Low"。在打印命令中,两个都是"Low",而我希望第一个是"Low",我希望第二个仍然是"High",因为它没有改变(我想)。我做错了什么?
HourlyUsageBlock = ["High" for x in range(12)]
WorkDayUsageBlock = [HourlyUsageBlock for x in range(12)]
Hour = 2
MinBlock = 6
WorkDayUsageBlock [MinBlock][Hour] = "Low"
print (WorkDayUsageBlock[6][2])
print (WorkDayUsageBlock[10][2])
【问题讨论】:
-
你做错了什么是你在
WorkDayUsageBlock中引用了同一件事(HourlyUsageBlock)。您的理解不会产生 copy ,它只是指向它。WorkDayUsageBlock是指向相同HourlyUsageBlock的事物的列表。 -
@pvg:不,不是那个问题 IMO 的重复。
-
谢谢,我将前两行替换为:WorkDayUsageBlock = [["High" for x in range(12)] for y in range(12)] 并且它有效
-
题外话:如果您要编写大量 Python 代码,我建议您阅读并关注 PEP 8 - Style Guide for Python Code。它将使您的代码对其他人(最终对您自己)更具可读性。