python - 尝试在项目中使用 copy.deepcopy() 而不使用导入复制模块
问题描述
所以我为一个名为 Matrix 的“类”做一个项目,我不允许在其中使用任何导入模块。所以基本上我有代码:
class Matrix:
def __init__(self):
self.__list = []
def set_matrix(self, matrix_list):
self.__list = matrix_list
def transpose(self):
new_list = []
for item in range(len(self.__list) + 1):
new_list.append([])
for number in range(len(self.__list) + 1):
for item in self.__list:
new_list[number].append(item[number])
self.__list = new_list
def set_element(self, row_index, column_index, variable_to_change):
self.__list[row_index][column_index] = variable_to_change
def __add__(self, other):
new_list = Matrix()
new_list.__list = self.__list.copy()
for i in range(len(new_list.__list)):
for j in range(len(new_list.__list[i])):
new_list.__list[i][j] = new_list.__list[i][j] + other.__list[i][j]
return new_list
def __sub__(self, other):
new_list = Matrix()
new_list.__list = self.__list.copy()
for i in range(len(new_list.__list)):
for j in range(len(new_list.__list[i])):
new_list.__list[i][j] = new_list.__list[i][j] - other.__list[i][j]
return new_list
def __str__(self):
output_string = ''
for i in self.__list:
output_string += str(i).replace(',', '')\
.replace('[', '[ ')\
.replace(']', ' ]')\
+ '\n'
return output_string
m1 = Matrix()
m1.set_matrix( [[1,2,3,4],[5,6,7,8],[9,8,7,6]] )
print('m1:')
print(m1)
print()
m1.set_element(2,3,1)
print('m1[2,3] = 1:')
print(m1)
m2 = m1 + m1
m3 = m2 - m1
print('m2 = m1 + m1:')
print(m2)
print()
print('m3 = m2 - m1:')
print(m3)
print()
m3.transpose()
print('m3 transposed:')
print(m3)
print()
但是由于 copy() 没有从我使用 set_matrix 方法调用的列表中复制项目,因此 m1 被重新设置为新值,并且我得到错误的输出(所有值都为 0 的矩阵)。但是,如果我使用导入复制模块并使用 copy.deepcopy(self.__list) 而不是 copy() 我会得到正确的结果。有什么方法可以在不使用导入复制模块的情况下做到这一点?整天都在努力完成这项工作,所以任何帮助都将不胜感激:)
解决方案
推荐阅读
- php - Htaccess 不会将请求重定向到 php 脚本
- python - 芹菜内存意外泄漏
- android - 有时单击按钮后,文本会消失,有时我必须单击两次才能正常工作
- javascript - 未达到 PageMethod 的 onSuccess 函数
- rust - 使用 RLS 构建时是否可以禁用依赖项的功能?
- javascript - 链表 - 在索引处查找第 N 个元素
- javascript - 通过对象值对 json 项进行排序
- javascript - 在 AJAX 上找不到指向 JSON 文件的路由
- vb.net - 文本框中的斜体字体样式变为常规
- python-3.x - tf.nn.softmax_cross_entropy_with_logits 如何使用标签