首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过列表对嵌套列表进行索引

通过列表对嵌套列表进行索引
EN

Stack Overflow用户
提问于 2018-07-29 04:39:00
回答 4查看 371关注 0票数 1

给定一个嵌套列表,如下所示

代码语言:javascript
复制
>>> m= [[3, 1], [2, 7]]

我可以得到一个这样的元素

代码语言:javascript
复制
>>> m[1][0]
2

如果索引是在列表中给出的,我如何获得相同的值,例如[1, 0]

我正在寻找Q编程语言为dot提供的功能,如下面的代码所示

代码语言:javascript
复制
q) m: (3 1; 2 7)
q) m[1][0]
2
q) m . 1 0
2
EN

回答 4

Stack Overflow用户

发布于 2018-07-29 04:54:53

作为一个快速解决方案,您可以像这样滥用functools.reduce

代码语言:javascript
复制
from functools import reduce
def get_recursive(lst, idx_list):
    return reduce(list.__getitem__, [lst, *idx_list])

代码语言:javascript
复制
>>> y = [[3, 1], [2, 7]]
>>> get_recursive(y, [0, 1])
1
>>> get_recursive(y, [1, 0])
2

有相当多的转角情况需要处理(另外,您必须确保路径存在,否则将处理出现的任何错误),但这应该可以帮助您入门。

票数 5
EN

Stack Overflow用户

发布于 2018-07-29 05:15:07

只需定义一个递归函数,该函数获取传递的列表的索引,然后将该索引和切片索引列表传递给自身,直到切片索引列表为空:

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2018-07-30 06:49:23

您可以先转换为NumPy数组:

代码语言:javascript
复制
import numpy as np

m = [[3, 1], [2, 7]]
np.array(m)[1,0]

输出:

代码语言:javascript
复制
2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51575090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档