代码之家  ›  专栏  ›  技术社区  ›  AnoE

For as表达式

  •  0
  • AnoE  · 技术社区  · 5 年前

    这个 for 运算符也可以用作表达式,如

    print(c for c in iter)
    

    这个表达式的值定义得好吗?使用它的要点是什么?

    编辑:我是从智能手机上写的,但现在我回到我在其中看到的代码,我注意到一个错误,正如在评论中指出的那样-我添加了 c 在前面 对于

    1 回复  |  直到 5 年前
        1
  •  0
  •   adnanmuttaleb    5 年前

    这种形式的 for 循环称为 对象,来自 here :

    迭代器,也就是说,它可以在for循环中使用。

    阿尔索

    生成器表达式提供了一个额外的生成快捷方式 类似于列表理解的表达式的生成器。

    实际上,我们可以将列表理解转换为生成器表达式 将方括号(“[]”)替换为圆括号。 或者,我们可以把列表理解看作生成器 在列表构造函数中包装的表达式。

    例子:

    >>> (x for x in range(10))
    <generator object <genexpr> at 0x0000014DEA749E08>
    
        2
  •  0
  •   milanbalazs    5 年前

    * 字符以打印迭代器的所有值。

    my_list = [1, 2, 3, 4, 5]
    print(*my_list, sep="\n")
    

    输出:

    >>> python3 test.py 
    1
    2
    3
    4
    5
    

    或者你可以用 * 字符和列表理解。

    my_list = [1, 2, 3, 4, 5]
    print(*[x for x in my_list if x > 2], sep="\n")
    

    输出:

    >>> python3 test.py 
    3
    4
    5
    

    也可以打印生成器对象,如下所示:

    代码:

    my_list = [1, 2, 3, 4, 5]
    print(x for x in my_list)
    

    >>> python3 test.py 
    <generator object <genexpr> at 0x7f614ded7d58>