鱼C论坛

 找回密码
 立即注册
查看: 802|回复: 1

代码问题/deepcopy

[复制链接]
发表于 2019-2-26 10:38:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
python新手,请路过的大神帮忙解答一下,多谢~
问题:什么原因使excess和short的内容错乱。(这里直接说short和excess可能比较懵,还是先看下代码。多谢多谢)
如下为代码片段:
简单解释一下:len(V)=10;R为一个有10个元素(均为数字)的列表;d为一个1行10列的矩阵;
代码实现:把R和d相同位置的数值差,为正的连同索引添加到excess字典中去;为负的连同索引添加到short字典中去。
short = {}
excess = {}
shortfall=[]
for i in range(len(V)):
    shortfall.append(R[i] - d[0,i])
for i in range(len(V)):
    if shortfall[i]> 0:          #把shortfall里的正数连同索引添加到excess字典中去
        excess.setdefault(i, shortfall[i])
    else:
        if shortfall[i] < 0:     #把shortfall里的负数连同索引添加到short字典中去
            short.setdefault(i, shortfall[i])

[i][i][i][i]

但是运行的过程监控到excess、short与shortfall里的正负并不能一一对应。
监控到的如下:
shortfall=[13.0, -45.0, 10.0, -62.0, -63.0, -7.0, 159.0, 57.0, -78.0, 111.0]
excess={6: 11.0, 7: 22.0, 9: 62.0}
short={}

把excess和short 分别 deepcopy给short1和excess1,excess和short的表现同上。但是short1和excess1的表现正常,short1里的索引值和为负的数值铜shortfall里的完全对应,excess1也是。
[/i][/i][/i][/i][i][i][i][i]代码如下:[/i][/i][/i][/i]

shortfall=[]
short = {}  # 需求比订货量大,缺货的量
excess = {}  # 需求比订货量小,多余的量
for i in range(len(V)):
    shortfall.append(R[i] - d[0,i])
for i in range(len(V)):
    if shortfall[i]> 0:
        excess.setdefault(i, shortfall[i])
    excess1=copy.deepcopy(excess)
for i in range(len(V)):
    if shortfall[i] < 0:
        short.setdefault(i, shortfall[i])
    short1=copy.deepcopy(short)

[i][i][i][i][i][i][i][i][i]

这段代码单独拿出来运行也没有问题:
[/i][/i][/i][/i][/i][/i][/i][/i][/i]
from numpy import *
R=[503, 201, 432, 274, 922, 808, 287, 310, 395, 2361]
d=matrix([[701., 609., 699., 675., 740., 726., 594., 805., 626., 534.]])
shortfall=[]
short={}
excess={}
for i in range(10):
    shortfall.append(R[i]-d[0,i])
for i in range(10):
    if shortfall[i]> 0:
        excess.setdefault(i, shortfall[i])
for i in range(10):
    if shortfall[i] < 0:
        short.setdefault(i, shortfall[i])
print(shortfall)
print(short)
print(excess)
[i][i][i][i][i][i][i][i][i][i][i][i][i][i][i]

[i][i][i][i]

问题:什么原因使excess和short的内容错乱。
[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-2-26 11:06:05 | 显示全部楼层
具体没看,字典本身哈希结构就是无序的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-14 04:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表