我要定义一个接受两个参数的函数:int
和list
。
如果函数在列表中找到整数,则返回其坐标。
例如,我如何对以下列表中的数字4进行操作,不使用numpy ?
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]
]
您可以假定目标将始终只显示一次,并且始终包含在列表中。
答案 0 :(得分: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)
演示与您的列表l
:
>>> coords(l, 2)
>>> (1, 1)
>>> coords(l, 1)
>>> (1, 2)
如果以后如果目标不在列表中,则希望使该函数正常工作,请记住next
带有可选的default
参数。
答案 1 :(得分:1)
您可以执行以下操作:
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]
]
def findElement(element, l):
for i in range(len(l)):
for j in range(len(l[i])):
if element==l[i][j]:
return (i,j)
return None
print(findElement(4,l))
输出:
(11, 7)
答案 2 :(得分:0)
我会使用这样的解决方案:
function calculateArea(radius = 3)
{
var area = Math.PI * radius*radius;
console.log("The area is " + area);
}
我定义了一个函数搜索,可用于从输入列表中搜索某些值。
答案 3 :(得分:0)
这是我的方法:
def matrix_search(target, matrix):
for row_index, row in enumerate(matrix):
try:
return (row_index, row.index(target))
except ValueError:
pass
raise ValueError('Target {} not found'.format(target))
样品用量:
print(matrix_search(4, l))
注释
.index()
方法.index()
方法将返回元素的索引(如果找到)或抛出ValueError
(如果找不到)。在我们的上下文中,我们只是忽略此异常,然后转到下一行。