当我必须将多个状态与python中的if语句进行比较时,我该怎么办?

时间:2017-05-09 15:17:36

标签: python

假设hi有这个范围的hi [0] ~hi [200],并且如果hi [0~200]包括1,我想继续if语句。 如果hi列表中的一个而不是1(ex)hi [5] == 2),if语句不应该继续,但是else语句运行。 我该怎么办..? 如果hi [0] == 1和hi [1] == 1和...等 这是唯一的方法吗?

if hi[]==1:
    i =1
else:
    i=2

3 个答案:

答案 0 :(得分:2)

您想要检查给定范围内的所有值是否等于1,您需要all

hi = [1]*10

print(all(x == 1 for x in hi[0:7]))

返回True,因为从0到6(包括)的所有元素都是1.现在:

hi[5] = 5

print(all(x == 1 for x in hi[0:7]))

返回False,因为从0到6的所有元素都不是1

答案 1 :(得分:-1)

像这样循环:

for i, el in enumerate(hi):
    if el != 1:  # go to the next iteration without doing anything else
        continue
    else:
        # your code goes here
  

编辑:基于OP对@Andre回答的评论:

i = 1 if all(x == 1 for x in hi) else 0

答案 2 :(得分:-1)

如果我正确理解您的问题,您想检查数组范围内的所有项目是否都具有值1

您可以使用any和生成器表达式检查是否有任何项目等于1来执行此操作:

if any(item != 1 for item in hi[start:end]):
    print("Error")
else:
    # Ok