如何更改矩阵中的值?

时间:2017-04-22 15:14:35

标签: python list matrix

我正在尝试用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;

2 个答案:

答案 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中的可变和可变对象。