从嵌套列表的子数组返回元素的索引

时间:2018-03-07 20:45:23

标签: python list indexing nested append

我在尝试创建以下函数时遇到了很多问题...水平(m)将2D列表(表示矩阵)作为输入,搜索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​​个元素......我只想弄清楚如何在继续之前正确返回索引。谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

编辑(回应评论):

修正了错误:-)我不小心忘了(十)把方括号括起来。

return循环之后,你需要index for列表(重新加入你的return行,这样它的缩进级别会比函数的声明(它应该与index = []行对齐))。