我试图获取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))
答案 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()
)和第二个列表或行内的索引的元组。