gpt4 book ai didi

python - 没有 for block 的单行函数调用?

转载 作者:行者123 更新时间:2023-11-30 22:31:57 24 4
gpt4 key购买 nike

是否可以通过 Python 中的可迭代对象对函数进行单行调用?

背景:

假设我想在目录列表中创建一个子目录。传统上,我会使用列表理解来构建所需子目录路径的列表:

subs = [os.path.join(root, "sub") 表示 root 中的 root]

其中roots是目录列表。然后,我必须创建一个 for block 来调用 os.mkdir():

for sub in subs:
os.mkdir(sub)

问题:

Is it possible to use generators to accomplish this?

我尝试过:os.mkdir(os.path.join(root, "sub") 用于根中的根)

但它会抛出一个 TypeError ,表示不接受生成器。

最佳答案

是的,你可以这样做:

[os.mkdir(os.path.join(root, "sub")) for root in roots]

这是有效的,因为即使您没有将其结果分配到任何地方,列表理解也会被执行。 os.mkdir 调用将返回 None,因此结果将是 None 列表(您无需关心),但该函数的效果将会发生。

现在,是否是这样还有争议:

for root in roots:
os.mkdir(os.path.join(root, "sub"))

或者甚至:

for root in roots: os.mkdir(os.path.join(root, "sub"))

更具可读性,因为人们通常期望列表推导式生成列表和循环来执行操作,因此,例如,如果您在检查代码时在内部执行此操作,则可能很容易错过您实际上正在创建文件夹的一种理解。但如果您想要,就可以。

关于python - 没有 for block 的单行函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45637990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com