我正在尝试用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])
,因为它没有改变(我想)。我做错了什么?
int val = 1;
答案 0 :(得分:0)
>>> print (WorkDayUsageBlock)
[['High', 'High', 'Low', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High'], ['High', 'High', 'Low', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High'], ['High', 'High', 'Low', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High'], ['High', 'High', 'Low', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High'], ['High', 'High', 'Low', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High'], ['High', 'High', 'Low', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High'], ['High', 'High', 'Low', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High'], ['High', 'High', 'Low', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High'], ['High', 'High', 'Low', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High'], ['High', 'High', 'Low', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High'], ['High', 'High', 'Low', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High'], ['High', 'High', 'Low', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High']]
你可以看到每一行的每个第3个元素都是'低',因为理解只是使用相同的
HourlyUsageBlock
。因此,当您更改第3个元素的值时,它会反映在每一行中,因为理解不会复制HourlyUsageBlock
。
答案 1 :(得分:0)
初始化public function setSupervisor()
{
if(isset($_POST['supervisor'])){
$this->supervisor = $_POST['supervisor'];
}
}
//Select Supervisor function
function selectSupervisor(){
echo "<form action='Supervisee.php' method='post'>";
echo "<select name='supervisor'>";
$query = $handler->query("SELECT Lecturer_name FROM lecturer");
while($row = $query->fetch()){
echo "<option value='".$row['Lecturer_name']."'>".$row['Lecturer_name']."</option>";
}
echo "</select>";
echo "</form>";
}
时,您基本上将WorkDayUsageBlock
放在每个位置。由于WorkDay中的所有元素都是相同的列表,因此更改一个元素将全部更改。
试试这个解决方案:
HourlyUsageBlock
或者,您可以使用lst.copy():
WorkDayUsageBlock = [["high" for x in range(12)] for y in range(12)]
我建议你阅读Python中的可变和可变对象。