【问题标题】:Python: Can anyone explain "f for f in..." [duplicate]Python:谁能解释“f for f in ...” [重复]
【发布时间】:2020-07-02 00:02:27
【问题描述】:

谁能详细解释一下这是什么意思?以f for f in... 为例

list = [f for f in os.listdir(os.getcwd()) if os.path.isdir(f)]
print(list)

我了解基本 for 循环的语法,但我已经多次看到这种类型的东西,我觉得它很混乱。我一直在搜索,我只能找到有关格式的信息。我大约一个月前才开始使用python,并且仍在学习。感谢您的帮助!

【问题讨论】:

标签: python python-3.x for-loop


【解决方案1】:

假设您要创建一个值为 0 到 100 的列表

list = [i for i in range(100)]

这里i 将被添加到列表中,同时从 0 迭代到 100。

如果您需要任何规则,可以在循环中使用if 语句,例如:

list = [i for i in range(100) if i%2 == 0]

由于if 语句,此处只会将可被 2 整除的数字添加到列表中。

【讨论】:

  • FWIW,更简单的非过滤方法是list(range(100))。虽然 range 已经支持大多数操作 list 支持,所以转换它可能是多余的,但我离题了。
  • 我知道,但我没有任何东西可以迭代这是我使用的原因,但非常感谢。
【解决方案2】:

它被称为list comprehension

列表推导式提供了一种创建列表的简洁方法。常见的 应用程序将创建新列表,其中每个元素都是 应用于另一个序列的每个成员的一些操作或 可迭代,或创建满足 a 的那些元素的子序列 一定的条件。

【讨论】:

    【解决方案3】:

    这是一个列表推导。这个循环通常会这样写:

    files = []
    for f in os.listdir(os.getcwd()):
        if os.path.isdir(f):
            files.append(f)
    

    【讨论】:

    • 我通常会说使用像files = [] 这样有意义的东西,但我在手机上输入了这个,我很懒
    猜你喜欢
    • 2021-01-02
    • 1970-01-01
    • 2012-09-01
    • 2020-11-08
    • 1970-01-01
    • 2010-10-06
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多