使用一个标志变量创建一组规则

时间:2017-07-10 22:03:28

标签: python python-2.7

我有一个代码如下:

flag = 0
if A == 'string1':
    flag = 1
if B == 'string2':
    flag = 1
if C == 'string3':
    flag = 1

有没有办法创建我想检查的规则列表,检查是否至少有一个是真的,并将flag设置为1?例如,

D = [A == 'string1', B == 'string2', C=='string3']
if D:
    flag = 1

3 个答案:

答案 0 :(得分:4)

if A == 'string1' or \
   B == 'string2' or \
   C == 'string3':
    flag = True    # use Boolean values, not coded numbers

或者只是分配布尔表达式的结果:

flag = A == 'string1' or \
       B == 'string2' or \
       C == 'string3'

最后一个会为flag提供正确的值,TrueFalse

如果您需要变量和值列表,请尝试以下方法:

vars = [A, B, C]
vals = ['string1', 'string2', 'string3']
flag = any([vars[i] == vals[i] for i in range(len(vars)) ])

...或者制作相同项目的字典(由codehearts提供):

checks = { 'string1': A, 'string2': B, 'string3': C }
flag = any([var == val for var, val in checks.iteritems() ])

...或zip每个wwii列表成对(元组):

flag = any(a == b for a, b in zip(vars, vals))

您可以根据需要扩展列表大小。这假设每个"规则"只是检查配对值。

答案 1 :(得分:3)

您可以使用任何

//1. User scrolls
$(document).one("scroll", function() {
  $(".website-wrapper").animate({
  bottom: "1000",  
  opacity: 0.25,

  },300,function(){

  });
});

答案 2 :(得分:2)

你快到了。

D = [A == 'string1', B == 'string2', C=='string3']
if True in D:
    flag = 1

D具有每个测试的布尔值,如果其中任何一个为真,则在D测试中为True。

编辑:我在一年多前写过这篇文章,但最近有人对它进行了评论,并回顾它,我现在知道有一个可以节省一些按键的内置功能。<​​/ p>

我们可以将上面的代码编写为

D = [A == 'string1', B == 'string2', C=='string3']
if any(D):
    flag = 1