假设我有列表
a = [[1, 2, 3],
[4, 5, 6]]
我有一个索引,我想用它来访问此列表的元素。
index = [1,2]
我想使用类似的东西
a[*index] = 9
表示a[index[0]][index[1]] = 9
,但这不起作用, a[**index] = 9
也不起作用。是否有类似的方法可以在没有索引调用链的情况下执行此操作?
我想要一种方法来执行此操作,而无需使用任何必须导入的库。
最佳答案
首先a[c, d, e]
相当于 a[(c, d, e)]
相当于 a.__getitem__((c, d, e))
。注意双括号。任何__getitem__
想要与 Python 数据模型良好配合的实现总是需要一个(显式)参数。
这就是为什么从 index
中解压值的原因里面[]
没有多大意义。 a[*index]
会给你一个SyntaxError
和a.__getitem__(*index)
给你一个TypeError
(因为你提供了太多的论据)。
标准 Python 列出了期望整数参数 __getitem__
,但是numpy
支持元组索引(numpy 数组仍然只接受 __getitem__
的一个参数,但它允许是一个元组)。
演示:
>>> import numpy as np
>>> a = np.array([[1,2,3], [4,5,6]])
>>> a[(1,2)]
6
当然,你可以省略括号,因为
>>> a[1,2]
6
完全等价。
关于python - 在多维列表索引中使用 splat 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50453733/