python - 为什么我的列表被仅在列表副本上运行的函数更改?
问题描述
所以我有一个列表D = [[1030, 1200], [1300, 1600], [1800, 1830]]
,我制作了一个名为 E: 的副本,E = D[:]
然后我尝试使用函数对其进行操作:covertToMin(E)
。但是,该功能也可以在D
没有意义的情况下运行,因为它们在内存中具有不同的位置。我很困惑,感谢任何帮助!
E = D[:]
for i in range(len(E)):
for j in range(0,2):
E[i][j] = convertToMinutes(E[i][j])
print(id(E))
print(id(D))
print(D)
print(E)
def convertToMinutes(time):
if time < 1000:
time = str(time)
minutes = time[1:]
hourmin = int(time[0])* 60
time = int(minutes) + (hourmin)
else:
time = str(time)
minutes = time[2:]
hourmin = int(time[:2]) * 60
time = int(minutes) + hourmin
return time
我收到的输出是:
4368232032
4368231552
[[690, 720], [900, 960], [1080, 1110]]
[[690, 720], [900, 960], [1080, 1110]]
解决方案
我建议您使用 python deepcopy来解决您的问题。文档页面很清楚,它将对此有所了解。
import copy
E = copy.deepcopy(D)
推荐阅读
- python - 如何在python3中打开virtualenv?
- python - Flask中是否有注销其他浏览器和设备的实现?
- c++ - 使用带有 cmake-js 的 lib2geom 编译脚本以在 N-API node.js 插件中使用
- excel - 在excel vba中将多列堆叠成一列
- python - 如何从 python 程序中正确创建 apache 等离子存储?
- javascript - 响应式语音被 CORS 阻止
- ios - 线程 1:EXC_BAD_ACCESS(代码=2,地址=0x1134ca968)
- mysql - Mysql 授予用户所有权限
- javascript - 如何在所有已获取元素的单击按钮上获得结果?
- javascript - 如何跨页面传播菜单状态?