如何让python告诉我以下哪些变量使if语句有效?

如何让python告诉我以下哪些变量使if语句有效?,python,loops,if-statement,Python,Loops,If Statement,我有一个if语句,如下所示,我想知道,对于我正在检查的4个变量,看看我的文件中对应的列中是否有单词“TRUE”,如何让python输出if语句对哪个变量有效 例如:如果我的数据集中的第一行(顺便说一句,它是一个电子表格)中变量a的单词为“true”,其余的单词为“false”,那么在循环的特定迭代过程中,我的if语句将对该变量有效。因此,在这种情况下,我希望python打印出它是变量“A”,对于循环的每个迭代如此。我怎样才能让程序做到这一点 for x in range(1,len(column

我有一个if语句,如下所示,我想知道,对于我正在检查的4个变量,看看我的文件中对应的列中是否有单词“TRUE”,如何让python输出if语句对哪个变量有效

例如:如果我的数据集中的第一行(顺便说一句,它是一个电子表格)中变量a的单词为“true”,其余的单词为“false”,那么在循环的特定迭代过程中,我的if语句将对该变量有效。因此,在这种情况下,我希望python打印出它是变量“A”,对于循环的每个迭代如此。我怎样才能让程序做到这一点

for x in range(1,len(column)):
    if A[x] or B[x] or C[x] or D[x] == "TRUE":
       # here I want to print out whichever variable the 'true' corresponds to
你可以做:

for x in range(1, len(column)):
    for name, var in [('A', A), ('B', B), ('C', C), ('D', D)]:
        if var[x] == "TRUE":
             print name
你可以做:

for x in range(1, len(column)):
    for name, var in [('A', A), ('B', B), ('C', C), ('D', D)]:
        if var[x] == "TRUE":
             print name

它可以是多个,但它只会检查到第一个阳性,因此即使是口译员也不知道
C
D
是否包含
TRUE
给定的
B
是否为
TRUE
。在每一列上分别分成多个
if
语句。

可以有几个,但它只会检查到第一个阳性,因此即使是口译员也不知道
C
D
是否包含
TRUE
给定的
B
是否为
TRUE
。在每一列上分别拆分为多个
if
语句。

首先,if语句没有达到预期的效果。有一些隐式大括号使其看起来像这样:

if (A[x]) or (B[x]) or (C[x]) or (D[x] == "TRUE"):
如您所见,
==“TRUE”
部分仅适用于
D[x]
,而不适用于其他部分。相反,
A[x]
B[x]
C[x]
具有“trueish”值将足以使整个检查计算为true。即使它们都包含
“FALSE”

相反,您需要为所有人重复
==“TRUE”
部分:

if A[x] == "TRUE" or B[x] == "TRUE" or C[x] == "TRUE" or D[x] == "TRUE":
在检查是否相等时,还可以使用
in
运算符检查
“TRUE”
是否在所有四列的列表中:

if "TRUE" in (A[x], B[x], C[x], D[x]):
但是,正如您想知道的那样,这四列中哪一列具有真正的值,您仍然需要将其拆分:

if A[x] == "TRUE":
    # A is true
elif B[x] == "TRUE":
    # B is true
elif C[x] == "TRUE":
    # C is true
elif D[x] == "TRUE":
    # D is true
else:
    # neither is true

首先,你的if语句没有达到你期望的效果。有一些隐式大括号使其看起来像这样:

if (A[x]) or (B[x]) or (C[x]) or (D[x] == "TRUE"):
如您所见,
==“TRUE”
部分仅适用于
D[x]
,而不适用于其他部分。相反,
A[x]
B[x]
C[x]
具有“trueish”值将足以使整个检查计算为true。即使它们都包含
“FALSE”

相反,您需要为所有人重复
==“TRUE”
部分:

if A[x] == "TRUE" or B[x] == "TRUE" or C[x] == "TRUE" or D[x] == "TRUE":
在检查是否相等时,还可以使用
in
运算符检查
“TRUE”
是否在所有四列的列表中:

if "TRUE" in (A[x], B[x], C[x], D[x]):
但是,正如您想知道的那样,这四列中哪一列具有真正的值,您仍然需要将其拆分:

if A[x] == "TRUE":
    # A is true
elif B[x] == "TRUE":
    # B is true
elif C[x] == "TRUE":
    # C is true
elif D[x] == "TRUE":
    # D is true
else:
    # neither is true

实际上,每个语句不需要单独的语句,只需在它们上面循环即可:

for thingy in A, B, C, D:
    if thingy[x] == "TRUE":
        print thingy
或者,如果您想做一些比打印更有用的事情:

truethingies = [thingy for thingy in (A, B, C, D) if thingy[x] == "TRUE"]
如果您只想要第一个:

for thingy in A, B, C, D:
    if thingy[x] == "TRUE":
        print thingy
        break
    else:
        print "None of them. They're all lies."
……或者

truethingy = next(thingy for thingy in (A, B, C, D) if thingy[x] == "TRUE")

实际上,每个语句不需要单独的语句,只需在它们上面循环即可:

for thingy in A, B, C, D:
    if thingy[x] == "TRUE":
        print thingy
或者,如果您想做一些比打印更有用的事情:

truethingies = [thingy for thingy in (A, B, C, D) if thingy[x] == "TRUE"]
如果您只想要第一个:

for thingy in A, B, C, D:
    if thingy[x] == "TRUE":
        print thingy
        break
    else:
        print "None of them. They're all lies."
……或者

truethingy = next(thingy for thingy in (A, B, C, D) if thingy[x] == "TRUE")

如果我理解问题描述,很可能您都想知道哪些主索引值的任何一个索引项满足测试要求,以及哪些索引项满足测试要求。我想你想按规定的顺序测试它们,然后像或那样短路

anames = ['A', 'B', 'C', 'D']
arrays = [A, B, C, D]
for i in range(len(cols)):
   for j in range(len(arrays)):
      if arrays[j][i] == "TRUE":
        yield anames[j], i
        break

如果我理解问题描述,很可能您都想知道哪些主索引值的任何一个索引项满足测试要求,以及哪些索引项满足测试要求。我想你想按规定的顺序测试它们,然后像或那样短路

anames = ['A', 'B', 'C', 'D']
arrays = [A, B, C, D]
for i in range(len(cols)):
   for j in range(len(arrays)):
      if arrays[j][i] == "TRUE":
        yield anames[j], i
        break

该代码没有检查您描述的内容。试着把
A[x]=True
放在循环之前……放在一边:你似乎认为
A[x]或B[x]或C[x]或D[x]=“True”
(A[x]=“True”)或(B[x]=“True”)或(C[x]=“True”)或(D[“x”=“True”)相同。
。但这不是它的工作原理。请参阅。如果多个列包含单词“TRUE”,该怎么办?您想只返回代码找到的第一个吗?您想知道哪个列具有满足测试的值,还是想知道该列的值,即A与A[x]?该代码没有检查您描述的内容。试着把
A[x]=True
放在循环之前……放在一边:你似乎认为
A[x]或B[x]或C[x]或D[x]=“True”
(A[x]=“True”)或(B[x]=“True”)或(C[x]=“True”)或(D[“x”=“True”)相同。
。但这不是它的工作原理。请参阅。如果多个列包含单词“TRUE”,该怎么办?您想只返回代码找到的第一个吗?您想知道哪个列具有测试满足值,还是想知道该列的值,即A与[x]?对问题的很好的解释(特别是问题的另一半,OP甚至不知道他拥有的那一半)。对问题的很好解释(特别是问题的另一半,那一半OP甚至不知道他有)。