代码之家  ›  专栏  ›  技术社区  ›  Leif Andersen

在python中计算for循环,包含一个嵌入for循环的数组

  •  1
  • Leif Andersen  · 技术社区  · 14 年前

    我正在查看python中的以下代码:

    for ob in [ob for ob in context.scene.objects if ob.is_visible()]:
        pass
    

    显然,它是一个for-each循环,也就是说for-foo数组中的每个对象。但是,我在读取数组时遇到了一些问题。如果它有:

    [for ob in context.scene.objects if ob.is_visible()]
    

    非常感谢。

    4 回复  |  直到 14 年前
        1
  •  1
  •   rob    14 年前
        2
  •  0
  •   eduffy    14 年前

    第一个 ob 是一个表达式,举个简单的例子:

    >>>> [ x**2 for x in range(10) if x%2 == 0 ]
    [0, 4, 16, 36, 64]
    

    range(10) ,如果 x 即使是正方形。丢弃的任何奇数值

        3
  •  0
  •   Ryan Emerle    14 年前

    这是一份清单。您可以将其解读为:

    [some_new_value for the_current_value in source_list_of_values if matches_criteria]

    想想:

    [n*2 for n in [1,2,3,4]]
    

    这意味着,对于每一项, n ,在新列表中创建一个值为的条目 n*2 . 因此,这将产生:

    [2,4,6,8]
    

    在你的情况下,因为价值 ob 不是修改,只是根据 ob.is_visible() . 所以你得到了一份新的名单 是可见的。

        4
  •  0
  •   Will McCutchen    14 年前

    它可以帮助您了解将示例代码重写为等效代码的过程:

    temp_list = [ob for ob in context.scene.objects if ob.is_visible()]
    for ob in temp_list:
        pass