Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python数组混乱_Python_Arrays_Python 3.x_List Comprehension - Fatal编程技术网

Python数组混乱

Python数组混乱,python,arrays,python-3.x,list-comprehension,Python,Arrays,Python 3.x,List Comprehension,我是python新手。我来自C/C++背景,对我来说很难理解python的一些概念。我偶然发现了这段代码,这让我很困惑: file_names = [os.path.join(label_directory, f) for f in os.listdir(label_directory) if f.endswith(".ppm")] 因此,它是一个数组,将label_directory与一个变量f(两个字符串)连接起

我是python新手。我来自C/C++背景,对我来说很难理解python的一些概念。我偶然发现了这段代码,这让我很困惑:

file_names = [os.path.join(label_directory, f)
                   for f in os.listdir(label_directory) 
                   if f.endswith(".ppm")]
因此,它是一个数组,将
label_directory
与一个变量
f
(两个字符串)连接起来,该变量最初未初始化。如果条件
f.endswith(“.ppm”)
为真,则for循环随后填充变量
f

现在,从我的C/C++角度来看,我看到:


一种for循环,其if语句返回
True
False
。其中是排除所有未以
“.ppm”
扩展名结尾的文件的逻辑?

此语法称为列表理解。它通过计算满足
if
条件的嵌入式
for
循环的每个元素的左方括号后的表达式来构造一个列表。此语法称为列表理解。它通过计算满足
if

标准的嵌入式
循环的每个元素的左方括号后的表达式来构建一个列表,这称为列表理解。Python将列表理解定义为

列表理解由括号组成,括号中包含表达式,后跟for子句,然后是零个或多个for或if子句。结果将是一个新的列表,该列表是在其后的for和if子句上下文中对表达式求值的结果

从语法上讲,您给出的代码与

file_names = []
for f in os.listdir(label_directory):
    if f.endswith(".ppm"):
        file_names.append(os.path.join(label_directory, f))

如果您想了解有关列表理解的更多信息,可以在此处找到更多信息:

这称为列表理解。Python将列表理解定义为

列表理解由括号组成,括号中包含表达式,后跟for子句,然后是零个或多个for或if子句。结果将是一个新的列表,该列表是在其后的for和if子句上下文中对表达式求值的结果

从语法上讲,您给出的代码与

file_names = []
for f in os.listdir(label_directory):
    if f.endswith(".ppm"):
        file_names.append(os.path.join(label_directory, f))

如果您想了解有关列表理解的更多信息,您可以在这里找到更多信息:

在Python中,您看到的是所谓的“列表理解”。这是一个宽泛的主题,因此我建议您在internet上搜索“Python列表理解”,您将找到许多解释。
join
仅对通过条件的项目执行。在
c
术语中,考虑
join
就好像它被放在语句的末尾而不是开头一样。@union谢谢大家,现在正在做研究!这是一个列表。右侧的第一组代码是放置在if语句中的代码,如果条件为True,则要执行该语句。下一组代码是覆盖所有目录的for循环,然后使用if语句检查您的条件。请注意,如果在此代码中同时包含if和else,那么if和else将放在for循环之前。如果您在不同的行中展开上面的代码,您将首先编写for循环,然后是If语句,然后是
os.path.join(label\u directory,f)
。对于初学者:。在Python中,您看到的是所谓的“列表理解”。这是一个宽泛的主题,因此我建议您在internet上搜索“Python列表理解”,您将找到许多解释。
join
仅对通过条件的项目执行。在
c
术语中,考虑
join
就好像它被放在语句的末尾而不是开头一样。@union谢谢大家,现在正在做研究!这是一个列表。右侧的第一组代码是放置在if语句中的代码,如果条件为True,则要执行该语句。下一组代码是覆盖所有目录的for循环,然后使用if语句检查您的条件。请注意,如果在此代码中同时包含if和else,那么if和else将放在for循环之前。如果您在不同的行中展开上面的代码,首先要编写for循环,然后是If语句,然后是
os.path.join(label_directory,f)
。您的意思是“语义上”,而不是“语法上”。您的意思是“语义上”,而不是“语法上”。