检查列表列表中的位置是真还是假

时间:2016-10-29 14:09:25

标签: python list position row

我正在尝试编写一个函数来分析特定位置的给定列表列表,如果该位置存在则返回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

3 个答案:

答案 0 :(得分:1)

ifelse之后缩进代码。并使用冒号":"

def in_list(row, col, list):
    if list[row][col] == True:
        return True
    else:
        return False

答案 1 :(得分:1)

如果您确实想通过访问它来测试数组项,请将其包装在try .. except块中。如果发生异常,请返回False,否则返回True

但是,有一种更简单的方法 - 只需使用数组的长度测试rowcol指向有效条目。这是一种方法。

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块中。