在Python列表理解中,是否只需要表达式和for循环?
从Python速成教程中,我得到了以下代码块作为示例:在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循环中的变量。我假设表达式的计算结果是列表项的值。如果说您只需要任何
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)