给定一个嵌套列表,如下所示
>>> m= [[3, 1], [2, 7]]我可以得到一个这样的元素
>>> m[1][0]
2如果索引是在列表中给出的,我如何获得相同的值,例如[1, 0]
我正在寻找Q编程语言为dot提供的功能,如下面的代码所示
q) m: (3 1; 2 7)
q) m[1][0]
2
q) m . 1 0
2发布于 2018-07-29 04:54:53
作为一个快速解决方案,您可以像这样滥用functools.reduce:
from functools import reduce
def get_recursive(lst, idx_list):
return reduce(list.__getitem__, [lst, *idx_list])
>>> y = [[3, 1], [2, 7]]
>>> get_recursive(y, [0, 1])
1
>>> get_recursive(y, [1, 0])
2有相当多的转角情况需要处理(另外,您必须确保路径存在,否则将处理出现的任何错误),但这应该可以帮助您入门。
发布于 2018-07-29 05:15:07
只需定义一个递归函数,该函数获取传递的列表的索引,然后将该索引和切片索引列表传递给自身,直到切片索引列表为空:
def get(m,l):
if not l:
return m
return get(m[l[0]],l[1:])
print(get([[3, 1], [2, 7]],[1,0]))印刷品:2
发布于 2018-07-30 06:49:23
您可以先转换为NumPy数组:
import numpy as np
m = [[3, 1], [2, 7]]
np.array(m)[1,0]输出:
2https://stackoverflow.com/questions/51575090
复制相似问题