Python数组混乱
我是python新手。我来自C/C++背景,对我来说很难理解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(两个字符串)连接起
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)
。您的意思是“语义上”,而不是“语法上”。您的意思是“语义上”,而不是“语法上”。