无法从二维数组获取索引

时间:2020-09-05 06:46:43

标签: python-3.x

我试图获取25个数字以将其放入2D列表/数组中,但是每当我尝试获取该项目的索引时,我总是会遇到valueError。

我尝试过的事情。

我已经尝试过使用带有enumerate()函数的for循环来获取特定的项(1)。

我也尝试过使用.index()方法,但是也遇到了ValueError:1不在列表中。这让我对为什么代码不起作用感到困惑。

mylist = [list(map(int, input().split())),
                  list(map(int, input().split())),
                  list(map(int, input().split())),
                  list(map(int, input().split())),
                  list(map(int, input().split())),]
print(mylist)
print(mylist.index(1))

1 个答案:

答案 0 :(得分:0)

这里是考虑的一种方法:

myList = [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [12, 3, 5, 6, 7], [2, 4, 5, 6, 7], [2, 4, 3, 6, 2]]

def index_2d(input_list, value):
    for i, row in enumerate(input_list):
        try:
            return (i, row.index(value))
        except ValueError:
            continue
    # You can also raise ValueError here instead of implicit return (un-comment the next line)
    # raise ValueError(f'{value} is not in the list')

输出:

>>> print(myList)
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [12, 3, 5, 6, 7], [2, 4, 5, 6, 7], [2, 4, 3, 6, 2]]

>>> print(index_2d(myList, 12))
(2, 0)

>>> print(index_2d(myList, 11))
None

说明:

我们接受2d列表和我们要检查的值。然后使用enumerate(以跟踪主数组的索引)。然后,我们在每一行(主数组中的列表)中使用index()来检查值是否属于该行,如果不属于该行(引发ValueError异常),我们只需移至下一行并重复。但是,如果index()解析,我们将返回主列表内列表的索引的元组(来自enumerate())和第二个列表或行内的索引的元组。