【问题标题】:Returning index of elements from subarray of a nested list从嵌套列表的子数组返回元素的索引
【发布时间】:2018-08-16 02:01:41
【问题描述】:

我在尝试创建以下函数时遇到很多问题...horizo​​ntal(m) 以二维列表(表示矩阵)作为输入,搜索算术级数中的 4 个元素并返回位置(索引)这些元素。 (顺便说一句:它还假设在等差数列中垂直和对角搜索 4 个元素,但我现在只进行水平搜索。)我尝试了一堆不同的代码,但似乎没有任何结果,我们我在学校的课堂上根本没有使用过嵌套列表。请指教!

def horizontal(m):

    diff = m[0][1] - m[0][0]
    index=[]

    for i in range(len(m)-1):
        for j in range(len(m[i])):
            if m[i][j+1] - m[i][j] == diff:
                index.append(m[i][j])
                return index

>>>horizontal([[1, 2, 3, 4],
               [2, 5, 6, 9]])
>>>[1] #but I would like it to return: [[0,0],[0,1],[0,2],[0,3]]

另外,我知道这目前并没有将函数的搜索限制为 4 个元素...我只是想在继续之前弄清楚如何正确返回索引。谢谢!

【问题讨论】:

    标签: python list indexing nested append


    【解决方案1】:

    使用index.append([i, j]) 代替您当前的追加行。

    这实际上是附加一个列表,其中包含 i 的值作为其第一个元素,j 的值作为其第二个元素,这就是您想要的。

    目前,您的代码在m[i][j] 处附加元素,这不是您想要的。

    编辑(响应 cmets):

    修复了错误 :-) 我不小心忘记(十)将方括号放在方括号周围。

    您需要在return index 列表之后 for 循环(重新缩进您的return 行,使其比函数声明更深一个缩进级别(它应该与index = [] 行对齐))。

    【讨论】:

    • 这给了我:TypeError 'builtin_function_or_method' object is not subscriptable
    • 我正要回复说我用括号试过了! :D 遗憾的是,这给了我输出:[[0,0]],所以只是我想要的 4 个索引之一
    • 原来我只需要在代码的其他地方修复一行!有了这个和您的帮助,该函数现在返回各种索引 :) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2019-07-31
    • 2011-01-25
    • 2020-05-30
    • 1970-01-01
    相关资源
    最近更新 更多