python - 从列表中生成多个条件语句

标签 python python-3.x if-statement conditional-statements

我有一个这样的列表

a = [1,0,6,9,6,0,6,0,1,4,0,7,5,0]

我想创建一个这样的条件语句:

if a[1,3,8,13] != 0:
    do something

而这段代码显然是错误的。它必须是这样的:

if a[1] != 0 and a[3] != 0 and a[8] != 0 and a[13] != 0:
    do something

我想知道在我的案例中是否有更优雅的方法来使用 lambda 或循环编写多个条件语句。假设我的列表长度为 100,我需要为列表的 57 列创建条件语句。我可能不想以这种方式将它们全部写出来...... 谢谢

最佳答案

1.

你可以使用all:

if all(a[i] != 0 for i in [1,3,8,13]): # => a[i] != 0 for every i 
    #do smth

或者与 any 相同:

if not any(a[i] == 0 for i in [1,3,8,13]): # => there is no such i that a[i] == 0
    #do smth                               # => a[i] != 0 for every i 

2.

或者,您可以使用一些函数式编程的东西。
例如,您可以尝试 filter:

a = [1,0,6,9,6,0,6,0,1,4,0,7,5,0]
idxs_to_check = [1,3,8,13]

f = list(filter(lambda i: a[i] != 0, idxs_to_check))
if f == idxs_to_check:
    print('Meow')

或者,一行中的类似条件:

if not list(filter(lambda i: a[i] == 0, [1,3,8,13])): 
    print('Meow')

3.

最后,在您的特定情况下,您可以使用包含零的列表的乘积为零这一事实:

from numpy import prod

if prod([a[i] for i in [1,3,8,13]]):
    print("Woof")

关于python - 从列表中生成多个条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47117743/

相关文章:

python - 如何将字典转换为 python 中的元组?

python /批处理 : Use Python to press any key to continue

bash - Bash 中的 "$#"特殊参数是什么意思?

python - 从不同的tornado.RequestHandler实例访问/更新全局/共享defaultdict

python - Python 中 Tensorflow 的角度比较损失函数

python - “E: Unable to locate package python3-pip”

python - 如何从平面列表中制作嵌套列表?

python-3.x - 安装保管箱失败并损坏 pip3

如果在命令后找到文本,Java 会拆分

php - 排除 if 子句中的多个值