列出多个条件

时间:2015-10-19 19:18:30

标签: python list for-loop integer conditional

我正在创建一个布尔函数,用于检查列表中的每个元素是否大于1且小于6.此外,列表是正整数,而不是负数,0,字符串或其他任何内容。

我觉得我已经尝试了几乎所有东西而无法找到我的解决方案。这就是我现在暂时拥有的。

def checkList(aList):

    for i in aList:
        if i < 1:
            return False
        elif i > 6:
            return False
        else:
            return True

4 个答案:

答案 0 :(得分:3)

使用生成器表达式构建元素的中间列表,然后针对all检查它们,看它们是否适合您的约束。

def check_list(li):
    return all((type(i) == int and 1 < i < 6 for i in li))

答案 1 :(得分:2)

all使用isinstance(i, int)检查的单个生成器表达式是每个元素都是一个int 1 <= i <= 6以确保每个int都在1-6范围内:

def checkList(aList):
   return all(isinstance(i, int)  and 1 < i < 6 for i in aList)

all将短路并为任何非int或任何小于1或大于5的值返回False,如果所有元素都是整数且在1-6范围内,则返回True。

在您自己的代码中,如果您要检查我的列表中的每个元素是否大于1且小于6 ,那么您正在检查if i < 1elif i > 6所以if i < 2elif i > 5返回False,1不小于1,6大于5,所以要纠正自己的逻辑并检查整数。

def checkList(aList):
    for i in aList:
        if not isinstance(i, int):
             return False
        if i < 2:
            return False
        if i > 5:
            return False
    return True # outside loop

你需要移动返回True外部循环,因为一个是int 在1到6之间并不意味着它们都是。

可以改写为:

def checkList(aList):
    for i in aList:
        if not isinstance(i, int):
             return False
        if 2 > i > 5:
            return False              
    return True

答案 2 :(得分:1)

这对你有用

<div id="container">
  <div id="A"></div>
  <div id="B"></div>
  <div id="C"></div>
  <div class="D"></div>
</div>
<div id="output"></div>

这里重要的概念是def check_sequence(sequence, low, high): if all(isinstance(i, int) for i in sequence): return all(low < i < high for i in sequence) else: return False print(check_sequence([2, 5, 4, 3, 3], 1, 6)) >> True 。在Python中,您可以指定变量之间的值范围。

答案 3 :(得分:0)

你可以使用filter它会像这样

filtered = filter(seq, lambda x: 1 < int(x) < 6)

这将返回一个筛选列表,其中只包含介于1和6之间的项目。然后,您可以检查列表是否具有相同的长度,以查看是否删除了任何内容。

走这条路,你的功能看起来像这样:

def checkList(seq):
    filtered = filter(seq, lambda x: 1 < int(x) < 6)
    return len(filteted) == len(seq)