Python 下面的部分是如何工作的?
我试图理解以下内容:Python 下面的部分是如何工作的?,python,Python,我试图理解以下内容: outer_dir=os.path.expanduser("/home/nsingh/ansible-environments/aws") print (outer_dir) random_names = os.listdir(outer_dir) print (random_names) _____________________________________________________________ inner_dirs = [ os.path.join
outer_dir=os.path.expanduser("/home/nsingh/ansible-environments/aws")
print (outer_dir)
random_names = os.listdir(outer_dir)
print (random_names)
_____________________________________________________________
inner_dirs = [
os.path.join(outer_dir, name, "inventory/group_vars")
for name in random_names
]
print (inner_dirs)
inner_dirs = [name for name in inner_dirs if os.path.isdir(name)]
__________________________________________________________________
盒子里的部分是我想要清楚地理解的,以及它是如何执行的。有人能帮忙吗?这些是Python语法元素,允许您在生成器表达式中动态生成列表内容
基本上,展开时,此代码如下所示:
inner_dirs = []
for name in random_names:
element = os.path.join(outer_dir, name, "inventory/group_vars")
inner_dirs.append(element)
print(inner_dirs)
new_inner_dirs = []
for name in inner_dirs:
if os.path.isdir(name):
new_inner_dirs.append(name)
inner_dirs = new_inner_dirs
这显然不是最优的(包括创建不需要的列表和附加,因此需要更多的时间和内存),因此这种理解可以使循环更清晰、更简洁、更高效
评审顺序如下:
[(3) for i in (1) if (2)]
(1)
在enter时只计算一次,(2)
和(3)
在每次迭代中独立计算一次
(1)
应该是一个iterable对象,(2)
应该返回一个可以转换为类型bool
的值?很好,我是一个初学者,想更好地理解python,你能给我一些启动python的链接吗learning@Kittystone如果你擅长阅读技术文献,这是一个潜水的好地方。如果不是,考虑阅读一些关于Python的初学者或在线课程的书——有很多小的东西,<代码> THS.FielyValue= [WaveTykey Key中的Key的GET(key)< /代码>,@ KyTytSt-是的,遵循这个模式的一切:<代码> [(3)i(1)如果(2)] < /代码>(其中,if
部分是可选的,可以有多个)是一个列表comprehension@Leva7请注意,if只能有一个(尽管它可以有多个条件)。此外,if
后面的任何有效语法都将等同于布尔值,这只是该布尔值是否有意义。