在多条件IF语句中,如何仅输出满足条件的值?

时间:2019-09-02 02:18:03

标签: python python-3.x

在下面的代码中,如果满足第一个IF条件,则应打印A [0]。如果满足第二个IF条件,则应打印A [1]。

在此代码中,我要打印'B'

A = ['A','a','O','E','B','B']
if ((A[0] == A[2]) or (A[1] == A[3]) or (A[4] == A[5])):
  print(A[])

我有20种条件要检查,并希望在一个满足条件的真实条件下打印该值。

4 个答案:

答案 0 :(得分:3)

这应该是最简单的方法,一旦A数组开始增长到成百上千个元素,扩展起来就容易得多:

A = ['A','a','O','E','B','B']

for i in range(0,len(A),2) :
    if A[i] == A[i+1] :
        print A[i]
        break    # optionally, if you need just one result

答案 1 :(得分:1)

您将不得不将这些if语句分成一系列if-elif

if A[0] == A[1]:
   print(A[0])
elif ...

在python 3.8中,您也许可以使用赋值表达式。但是不确定,因为python 3.8仅在beta中,并且我还没有对其进行测试。

答案 2 :(得分:0)

尝试一下:

A = ['A','a','O','E','B','B']
if A[0] == A[1]:
    print(A[0])
elif A[2] == A[3]:
    print(A[2])
elif A[4] == A[5]:
    print(A[4])

或者,如果您希望同时打印多个条件,则可以执行以下操作:

A = ['A','a','O','E','B','B']
if A[0] == A[1]:
    print(A[0])
if A[2] == A[3]:
    print(A[2])
if A[4] == A[5]:
    print(A[4])

在这种情况下,如果所有三件事都评估为True,则将看到所有这三件事都已打印。

编辑:要回答有关20的问题,如果它们都具有相同的逻辑(所有条件),则可以编写如下内容。

for i in range(0, len(A), 2):
    n = i + 1
    if A[i] == A[n]:
        print(A[i])

这将适用于任何长度的A

答案 3 :(得分:0)

A = ['A','a','O','E','B','B']
print(next(x[0] for x in zip(A[0::2], A[1::2]) if x[0] == x[1]))

    Works as follows:
        A[0::2] are even elements of the array
        A[1::2] are odd elements of the array
        zip(A[0::2], A[1::2]) => (A[0], A[1]), (A[2], A[3]), ...
        (x[0] for x in zip(A[0::2], A[1::2]) if x[0] == x[1]))

    Creates a generator which only has an output when a pair (i.e. (A[i], A[i+1])  
    has the same value (i.e. A[i] == A[i+1]).  
    x[0] corresponds to the first element of the pair x.

next(...)

返回生成器的下一个输出(请参见https://www.programiz.com/python-programming/methods/built-in/next

相关问题