如何让Python函数检查列表的每个元素?

时间:2015-03-21 11:06:55

标签: python

我被命令建立一个Bulean函数,它接受一个数字列表,如果列表是一个适当的等级列表(即每个数字在0到100之间),则执行“True”,否则为“False”。然而我遇到错误,引起了,我相信我对这个程序并不是非常彻底的了解。我在这里问的原因是我主要通过做事来学习。

我尝试了几个脚本。这是其中之一:

 def IsValidGradeList(I):
    for x in range(0,len(I)+1):
        if I[x] not in range (0,101):
            return False
        else: continue
        return True

正如我所看到的,代码将不会像在脚本编写器中那样。我怎么参加呢? 我非常感谢你的帮助。

谢谢大家的帮助。不幸的是,我还没有使用“全部”内置函数,因为我们还没有学会如何正确使用它。然而,这是我到目前为止所做的。它似乎正在发挥作用。

def AreIntegers(I):
    x=0
    for x in range(0,len(I)):
        if type(I[x])==int:
            x=x+1
        else:
                return False
    return True

def IsBounded(I):
    x=0
    for x in range(0,len(I)):
        if I[x] in range(0,101):
            x=x+1
        else:
                return False
    return True

def IsValidGradeList(I):
    if IsBounded(I)==True:
        if AreIntegers(I)==True:
            return True
        else:
            return False
    else:
        return False

3 个答案:

答案 0 :(得分:2)

代码需要遍历列表,如果它捕获的等级超出0-100范围,则返回False。如果它没有捕获任何这样的等级,它将继续直到它到达列表的末尾。那时我们知道没有一个等级超出范围,所以可以返回True。因此,简单地取消return True以便在循环结束后执行它会使代码工作。

def IsValidGradeList(I):
    for x in range(0,len(I)+1):
        if I[x] not in range (0,101):
            return False
        else: continue
    return True    # This needs to be *outside* of the for loop

这可以简化一点:continue语句不做任何事情;你可以循环遍历列表的元素而不是使用索引;并且您可以使用a <= x <= b表单而不是range来检查成绩是否在范围内。

def is_valid_grade_list(L):
    for grade in L:
        if not 0 <= grade <= 100:
            return False
    return True

all为此类函数提供了一个快捷方式:

def is_valid_grade_list(L):
    return all(0 <= grade <= 100 for grade in L)

如果您需要检查每个成绩是否为整数以及检查它是否在范围内,您只需将isinstance(grade, int)添加到条件中:

def is_valid_grade_list(L):
    for grade in L:
        if not (isinstance(grade, int) and 0 <= grade <= 100):
            return False
    return True

答案 1 :(得分:0)

is_valid_grade_list = all([x in xrange(0, 101) for x in grade_list])

答案 2 :(得分:0)

列表理解如何(不查看示例输入数据)?

all([False if I[x] not in range(0, 101) else True for x in range(0, len(I)+1)])