我正在用Python为一个类创建一个简单的Bin打包程序,并且遇到无法完全跟踪的范围问题。我试图更改ffBins列表中的值,但是列表中的值未更改。
打印结果显示我期望的结果(“ 10 5 5”),因为我从j中减去了i,但是它并没有像我期望的那样改变实际列表中的值。我怀疑在循环过程中需要以其他方式指向列表,但是解决方案使我难以理解。是否有一种简单的方法来更改列表中的值,而不仅仅是当前的j变量?
ffBins.append(10)
for i in ffItems:
itemPacked = 0
for j in ffBins:
#print(j)
if j >= i:
print(j),
print(i),
j = j-i
print(j)
itemPacked = 1
#break
if itemPacked == 0:
ffBins.append(10)
ffBins[-1] = ffBins[-1]-ffItems[i]
答案 0 :(得分:0)
您在这段代码中所做的就是将j重新绑定到一个新值。您需要通过索引将其设置回列表中。您可以使用enumerate
来获取索引和值。
for index, j in enumerate(ffBins):
...
ffbins[index] = j - i