Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_List Comprehension - Fatal编程技术网

python语法不清晰

python语法不清晰,python,list,list-comprehension,Python,List,List Comprehension,我很难理解以下列表: words = [word for line in open('words.txt', 'r') for word in line.split()] 我理解第一部分,open('words.txt',r')中的逐字逐句但是第二部分让我困惑。这是否意味着对于words.txt中的每一行,拆分行上的每个word循环?for循环从左到右嵌套。您可以将其写为常规循环,如下所示: words = [] for line in open('words.txt', 'r'):

我很难理解以下列表:

words = [word for line in open('words.txt', 'r') for word in line.split()]

我理解第一部分,open('words.txt',r')中的
逐字逐句
但是第二部分让我困惑。这是否意味着对于
words.txt
中的每一行,拆分
行上的每个
word
循环?

for
循环从左到右嵌套。您可以将其写为常规循环,如下所示:

words = []
for line in open('words.txt', 'r'):
    for word in line.split():
        words.append(word)
因此,
for
循环前面的表达式是添加到生成列表中的最终值,所有
for
循环(以及任何
if
测试)都嵌套在前面的循环或测试中执行


因此,是的,对于打开的文件中的每一行,该行将被拆分,并且这些行产生的单词将添加到正在生成的列表中。

yes。这正是它的意思。@JeanFrançoisfare:dupe是用于将一个列表理解用作另一个列表理解的表达式,而不是用于在一个列表理解中使用多个for循环。第二个答案可能涵盖了这种情况,但答案在完全错误的上下文中(这是对所贴问题的错误回答)。我注意到这篇文章对语法做了足够详细的介绍,包括多个
for
循环。@Jean-Françoisfare:不,我们只是需要找到一个更好的重复。