【问题标题】:Update list with True/False values in function在函数中使用 True/False 值更新列表
【发布时间】:2020-04-18 15:36:25
【问题描述】:

我正在为一个网站编写库存检查器,代码会迭代 SKU 值,检查商品是否有库存并更新库存值的列表。

我已经简化了代码:

def check(f,b):
    #Code would check if item instock result = a
    a = False
    #Below I am trying to update value 'b', from the list 'instock' with the 'a' value.
    b[:] = list(a)


sku =['9999', '8888', '7777', '6666']
instock = [True, False, False, True]


while True:
    for f, b in zip(sku, instock):
        check(f,b)
        time.sleep(5)

我在函数内更新产品的库存价值时遇到问题。

当前错误: TypeError: 'bool' 对象不可迭代

如何正确更新列表中的库存值?

代码遍历列表中的所有项目后我的预期结果:

instock = [False, False, False, False]

【问题讨论】:

  • 你想在这行做什么? str(b)[:] = list(a)不正确
  • @shotgunner 我正在尝试使用 'a' 值从列表 'instock' 更新值 'b'。
  • 在您的问题中添加您的预期输出
  • 更新了@shotgunner

标签: python python-3.x


【解决方案1】:

如果您更新您的 check 函数以返回布尔型库存结果,即:

def check(f):
    # Code would check if item 'f' is in stock
    return False  # <-- Return the result

那么你可以这样做:

while True:
    instock[:] = [check(f) for f in sku]
    time.sleep(5)

【讨论】:

    【解决方案2】:

    要修改列表,请使用global 关键字:

    def check(i, item):
        global instock
        # Check if the item is in the stock or not
        a = False  # Means that item is not in stock
        instock[i] = a 
    

    你不需要在这里使用zip()

    for k in range(10):
        for ind, v in enumerate(sku):
            check(ind, v)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多