【问题标题】:Changing the value of a list index inside a Queue of Lists更改列表队列中列表索引的值
【发布时间】:2021-11-30 18:27:24
【问题描述】:

我正在尝试使用以下代码在 Python 中创建队列

data = queue.Queue(maxsize=4)
lists = [None] * 3
for i in range(4):
    data.put(lists)

这会启动一个由 4 个列表组成的队列,每个列表中包含三个 None 元素,如下所示

> print(data.queue)
deque([[None, None, None], [None, None, None], [None, None, None], [None, None, None]])

现在,我想编辑列表中的元素,使其看起来像这样:

deque([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])

我尝试使用以下代码:

x = 0
for lst in data.queue:
    for elem in lst:
        elem = x
        x += 1 
print(data.queue)

但它不会改变列表元素的值,仍然返回

deque([[None, None, None], [None, None, None], [None, None, None], [None, None, None]])

有什么方法可以修改 Queue 对象内的 Lists 的内容吗?

【问题讨论】:

    标签: python list queue


    【解决方案1】:

    首先,如果您每次都输入lists,那么您引用的是同一个列表。你需要做的

    data = queue.Queue(maxsize=4)
    for _ in range(4):
        data.put([None] * 3)
        
    data.queue
    

    接下来,使用索引来更新值

    x = 0
    for lst in data.queue:
        for i in range(len(lst)):
            x += 1
            lst[i] = x
             
    print(data.queue)
    # deque([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
    

    【讨论】:

    • 非常感谢!正是我需要的解决方案
    猜你喜欢
    • 1970-01-01
    • 2017-04-18
    • 2018-04-30
    • 1970-01-01
    • 2021-12-17
    • 2021-12-10
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    相关资源
    最近更新 更多