gpt4 book ai didi

python - 将列表作为索引传递以在 n 维嵌套列表中赋值

转载 作者:行者123 更新时间:2023-12-01 08:18:28 25 4
gpt4 key购买 nike

我将具有任意维度的嵌套数组,表示为列表(不是numpy数组)。例如,这是一个例子mylist尺寸为 4x3x2:

  [[[0, 0], [0, 0], [0, 0]],
[[0, 0], [0, 0], [0, 0]],
[[0, 0], [0, 0], [0, 0]],
[[0, 0], [0, 0], [0, 0]]]

现在,给定一个代表索引的列表,我如何设置该列表的相应索引(长度等于 mylist 中的维数)的值?例如,如果 [2, 0, 1]传递给函数,我将如何转动 mylist进入

  [[[0, 0], [0, 0], [0, 0]],
[[0, 0], [0, 0], [0, 0]],
[[0, X], [0, 0], [0, 0]],
[[0, 0], [0, 0], [0, 0]]]

我尝试逐步设置一个指针(不确定这是否是正确的术语)变量来实现此目的,例如res= mylist; res = res[2]; ...; res[1] = X但这不会产生预期的结果。 重要的是,mylist的精确尺寸事先并不知道,因此它也可能是一个 4x3x2x8 数组。

最佳答案

setter/getter

这是一个函数,它接收列表参数,然后接收索引。

def accessor(array: list, *indexes: int):
return array if not len(indexes) else accessor(array[indexes[0]], *indexes[1:])

用法:

print(mylist[2][0][1] is accessor(mylist, 2, 0, 1))

True

<小时/>

设置者

为了能够编辑值,这里有另一个函数。首先是列表,然后是要放入的值以及索引系列。

def replacor(array: list, value, *indexes: int):
accessor(array, *indexes[:-1])[indexes[-1]] = value

用法:

mylist = [0, 0, [[0, 0]]]
replacor(mylist, "hi !", 2, 0, 1)
print(mylist)

[0, 0, [[0, 'hi !']]]

关于python - 将列表作为索引传递以在 n 维嵌套列表中赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54847587/

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