我正在尝试编写一个函数来分析特定位置的给定列表列表,如果该位置存在则返回True,否则返回False。
例如,如果我们称之为“list2”的列表列表有7列和5行(基本上是5个列表的列表,其中每个列表有7个值并且在它自己的行上),该函数应该返回如果测试用例list2 [5] [4]通过该函数运行,则为True,因为第5行和第4列存在,但是如果测试用例list2 [8] [6]或list2 [-5] [ - 1]通过它应返回的函数为False,因为第8行和第6列不存在,我们不能有负行和列。怎么能实现呢?
这是我到目前为止的代码。在测试时它会说无效的语法,但我认为无论如何我都会包含它以帮助显示我的目标
def in_list(row, col, list):
if list[row][col] == True
return True
else:
return False
答案 0 :(得分:1)
在if
和else
之后缩进代码。并使用冒号":"
def in_list(row, col, list):
if list[row][col] == True:
return True
else:
return False
答案 1 :(得分:1)
如果您确实想通过访问它来测试数组项,请将其包装在try
.. except
块中。如果发生异常,请返回False
,否则返回True
。
但是,有一种更简单的方法 - 只需使用数组的长度测试row
和col
指向有效条目。这是一种方法。
def in_list(row, col, lst):
if 0 <= row < len(lst) and 0 <= col < len(lst[row]):
return True
else:
return False
有更简洁的方法,但这应该是清楚的。如果if
不在范围内,col
行中的“快捷评估”会阻止检查row
中的例外情况。请注意,我将参数名称从list
更改为lst
:使用内置名称是一个坏主意。请注意,我的代码不会检查条目的值是True
还是False
,因为您的代码似乎试图这样做 - 如果您愿意,可以很容易地将该检查添加到我的码。最后,请注意,如果数组的行具有不同数量的列,我的代码也可以工作,这在Python中是可能的。我的代码只检查所请求的行,该行适用于此目的。
答案 2 :(得分:0)
一旦你通过添加冒号修改代码并根据需要缩进它,你可能会遇到另一个错误:在python中不允许访问不存在的索引,它不会导致False
绕过它的一种方法是将您的测试封装在try:
... except
块中。