在Python列表理解中,是否只需要表达式和for循环?

在Python列表理解中,是否只需要表达式和for循环?,python,Python,从Python速成教程中,我得到了以下代码块作为示例: squares = [value**2 for value in range(1, 11)] print(squares) 它表示“为要存储在新列表中的值定义表达式”。然后我想玩转这个概念,并做到了: import random as r my_list = [r.random() for value in range(20)] 我很快意识到我没有在表达式中使用for循环中的变量。我假设表达式的计算结果是列表项的值。如果说您只需要任何

从Python速成教程中,我得到了以下代码块作为示例:

squares = [value**2 for value in range(1, 11)]
print(squares)
它表示“为要存储在新列表中的值定义表达式”。然后我想玩转这个概念,并做到了:

import random as r

my_list = [r.random() for value in range(20)]

我很快意识到我没有在表达式中使用for循环中的变量。我假设表达式的计算结果是列表项的值。如果说您只需要任何表达式(不需要for循环中的变量)和for循环就可以使用列表理解,是否正确?

无论表达式是否使用循环变量,列表理解都可以工作。因此,您的示例可以很好地列出20个独立的随机数

有一种约定,即如果正在分配的变量是虚拟变量,则该变量的名称为

my_list = [r.random() for _ in range(20)]

是的,您是对的,您可以使用任何表达式,只要语法正确,表达式:

[1 for i in range(0,10)]
工作正常并返回列表:

[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

我们可以在表达式中使用迭代变量,也可以不使用。这是我们的愿望。 例如:

或者我们可以忽略迭代变量

li=[23 for i in range(1,10)]
     print(li)
例如,请参见-“列表理解由括号组成,括号中包含一个表达式,后跟一个for子句,然后是零个或多个for或if子句。”如您所示,该表达式不需要使用循环值(与常规for循环相同,其中循环变量不需要出现在正文中)-在这些情况下,惯例是将循环变量命名为
\uu
li=[23 for i in range(1,10)]
     print(li)