在这种情况下,我们可以形成一个 Python List Comprehension 吗?

问题描述

我最近了解到我们可以在 Python 列表推导式中包含多个循环,就像传统方式中的 for 循环序列一样。 因此,可以添加一个嵌套的 for 循环而不是另一个 for 循环作为列表推导式,如下所示:

result_list = [sub for part in parts for sub in part if sub > 10]

然而,我在一种情况下感到困惑,其中“sub”的数量太长,而如果即使有一个 sub 违反规则,也可以完全忽略其余的 if 条件。因此,我没有检查部分中的所有子项,而是在条件中断时中断循环并转到下一部分。

我正在分享我正在处理的代码中的一个场景。

for part in parts:
    for sub in part:
        if sub not in a_list:
            var = False
            break
    if var == True:
        b_list.append(part)

以上代码有效。只是出于学习语言的好奇心,我们可以以列表理解格式进行此操作吗?

在这里,如果我错过了什么,很抱歉。

解决方法

列表理解语法增加了对可选决策/条件的支持。向列表推导式添加条件逻辑的最常见方法是在表达式末尾添加条件:

像这样:

new_list = [expression for member in iterable (if conditional)]

在这里,您的条件语句/if 语句位于右括号之前或循环之后,如果有多个循环,就像我的场景一样。

条件/决策很重要,因为它们允许列表推导式过滤掉不需要的值,这通常需要调用 filter():

这是您要求的完整列表理解:

b_list = [part for part in parts if all(sub in a_list for sub in part)]

有关列表推导的更多信息或帮助,请转到 here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...