【问题标题】:Python: Altering list values from a loopPython:从循环中更改列表值
【发布时间】:2018-11-25 20:44:10
【问题描述】:

我正在用 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]

【问题讨论】:

    标签: python list loops


    【解决方案1】:

    您在这段代码中所做的只是将 j 重新绑定到一个新值。您需要通过其索引将值设置回列表中。您可以使用enumerate 来获取索引以及值。

    for index, j in enumerate(ffBins):
        ...
         ffbins[index] = j - i
    

    【讨论】:

    • 谢谢,Daniel... 我刚离开几分钟就意识到了我的错误。哎呀。
    猜你喜欢
    • 2021-10-09
    • 2019-07-25
    • 2015-09-10
    • 2016-07-21
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多