|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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] |
|