问题描述
如您所见,list的元素按字母顺序排列。那是在索引02
上,它具有元素10
而不是2
。还要注意,每个元素实际上是pulp.pulp.LpVariable
类型的对象,我们在列表中看到的数字实际上是每个对象的name
属性的值(可以在图像的最后一个列表中看到)。纸浆似乎按字母顺序对变量进行排序。
我希望此列表按每个对象的名称进行数字排序。那就是我想在索引{{1}处使用2
,在索引2
处使用3
,依此类推。
我在下面尝试过
3
如您所见,排序根本没有发生。我希望最后一行的输出是:
>>> from pulp import *
>>> prob = LpProblem("lp",LpMinimize)
>>> dvs = {}
>>> for i in range(20):
... dvs[i]=LpVariable(str(i))
...
>>> prob += lpSum(dvs.values())
>>> prob.variables()
[0,1,10,11,12,13,14,15,16,17,18,19,2,3,4,5,6,7,8,9]
>>> prob.variables().sort(key=lambda x:int(x.name))
>>> prob.variables()
[0,9]
我该怎么做?
解决方法
我不知道prob.variables()
的作用,但可调用的事实使我强烈怀疑,在对它进行排序和打印时,不是指的是同一列表,而是得到了一个新列表列出您每次致电prob.variables()
请尝试以下操作:
result = sorted(prob.variables(),key=lambda x:int(x.name))
print(result)