更改列表队列中列表索引的值
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]])
我正在尝试使用以下代码在 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]])