python - 作为函数参数的一行 for 循环

标签 python for-loop syntactic-sugar

def strange_syntax(stuff):
    return ".".join(item for item in stuff)

如何(以及为什么)运行这段代码?这里发生了什么?通常我不能使用这种语法。此外,如果该语法不在某些函数 中作为参数,则该语法不存在。

我知道,我也可以这样做:

def normal_syntax(stuff):
    return ".".join(stuff)

最佳答案

这叫做 generator expression .

它的工作方式就像列表推导式(但会惰性地评估迭代对象而不是从它们构建新列表),但是您使用圆括号而不是方括号来创建它们。您可以在只有一个参数的函数调用中去掉括号。

在您的特定情况下,不需要生成器表达式(如您所述)- (item for item in stuff) 给出与 stuff 相同的结果。当对诸如 (item.strip() for item in stuff) (map) 或 (item for item in stuff if item.isdigit()) 这样的项目进行操作时,这些表达式开始变得有意义(过滤器)等

关于python - 作为函数参数的一行 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48205442/

相关文章:

python - 使用堆栈将字符串解析为树

python - 递归公式带有循环很慢,有没有办法让这段代码运行得更快?

将函数转换为使用迭代

java - 如何向 Java 添加(次要的)语法糖?

json - Go - 即时构建 struct/json

python - GEKKO 中的 MPC 模式

python - 在某些消息电报机器人之后保存用户输入

python - "zsh: unknown file attribute: 0"在命令行上传递Python元组

c++ - 遍历 map 会使应用程序崩溃

java - 这个小小的错别字会产生什么样的影响呢?