在没有numpy的情况下搜索二维列表

3 python function list python-3.x

我正在寻找一个接受两个参数的函数:a int和a list.

如果函数在列表中找到整数,则返回其坐标.

例如,如果不使用numpy,我将如何为以下列表中的数字4执行此操作

l = [
         [0, 0, 0, 0, 0, 0, 0, 0, 0],
         [0, 2, 1, 1, 0, 1, 1, 1, 0],
         [0, 1, 0, 1, 0, 0, 0, 1, 0],
         [0, 1, 0, 1, 1, 1, 0, 1, 0],
         [0, 1, 0, 0, 0, 1, 0, 1, 0],
         [0, 1, 1, 1, 0, 1, 0, 1, 0],
         [0, 0, 0, 1, 0, 1, 0, 1, 0],
         [0, 1, 1, 1, 0, 1, 0, 1, 0],
         [0, 1, 0, 0, 0, 0, 0, 1, 0],
         [0, 1, 0, 1, 1, 1, 0, 1, 0],
         [0, 1, 0, 1, 0, 1, 0, 1, 0],
         [0, 1, 1, 1, 0, 1, 1, 4, 0],
         [0, 0, 0, 0, 0, 0, 0, 0, 0]
    ]
Run Code Online (Sandbox Code Playgroud)

您可以假设目标始终只显示一次,并且始终包含在列表中.

tim*_*geb 6

目标将始终只显示一次,并始终包含在列表中

您可以使用enumerate枚举外部列表和内部列表的元素.

def coords(lst, find):
    return next((i, j) for i, sub in enumerate(lst)
                       for j, x in enumerate(sub)
                       if x == find)
Run Code Online (Sandbox Code Playgroud)

用你的清单演示l:

>>> coords(l, 2)
>>> (1, 1)
>>> coords(l, 1)
>>> (1, 2)
Run Code Online (Sandbox Code Playgroud)

如果您希望在目标不在列表中时使函数正常工作,请记住next采用可选default参数.