更改列表队列中列表索引的值

Changing the value of a list index inside a Queue of Lists

我正在尝试使用以下代码在 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)

但它不会改变列表元素的值并且仍然 returns

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

有什么方法可以修改队列对象中列表的内容吗?

首先,如果您每次都输入 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]])