gpt4 book ai didi

python - 在 Python 中初始化二维数组

转载 作者:太空狗 更新时间:2023-10-29 20:33:05 25 4
gpt4 key购买 nike

我在用 python 初始化二维数组时遇到问题。我想要一个 6x6 阵列,我做到了

arr = [[None]*6]*6

但是当我这样做的时候:

>>> arr[1][2]=10
>>> arr
[[None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None]]

请注意,我只设置了 1 个项目,并在所有行上“复制”了它。怎么了?我认为它与它引用相同的列表有关,但我该如何解决这个问题?

我想

for key, _ in algos.items():
algoData[key] = []
for i in range(0,6):
algoData[key].append([])
for j in range(0,6):
algoData[key][i].append(None)

可以,但是只初始化一个空的6x6数组似乎很长,如果我想要一个10000x10000的数组,效率会很低吗?

更新

我还可以初始化二维数组的字典吗?我有一本像这样的字典:

algos = { "FIFO": ..., "LRU": ..., "Random": ... }

我想像下面这样初始化一个字典:

algoData = { "FIFO": 2D arr, "LRU": 2D arr, "Random": 2D arr }

最佳答案

@Cameron 建议您使用 NumPy 来处理数值数据数组是正确的。对于问题的第二部分,~Niklas B. 提出了使用 defaultdict 的建议。

没有提到的是为什么 [[None]*6]*6 行为异常。

答案是 [None]*6 创建了一个包含六个 None 的列表(如您所料),但是 [list]*6 不会制作 6 个独立的 list 副本 - 它制作 6 个 referencesame list.

Idiomatic Python 有一个部分可以更好地解释这一点:"Other languages have variables - Python has names" .

关于python - 在 Python 中初始化二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9954183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com