创建列表时的 Python 列表理解

问题描述 投票:0回答:2

我正在尝试生成随机数列表。我认为现在是使用列表理解来缩短代码的好时机。唯一的问题是现在我有这个未使用的“i”变量。有没有一种方法可以在不需要该变量的情况下编写它,或者我不应该太担心它?

int_list = [random.randrange(0, 50) for i in range(10)]
python variable-assignment
2个回答
3
投票

您可以使用

_
代替,它充当循环中不需要的变量的占位符

int_list = [random.randrange(0, 50) for _ in range(10)]
def print_hello():
   print("Hello")

for _ in range(10): # we don't need the value of "range(10)" in 
      print_hello   # each iteration.
    

或者忽略函数的输出

def func(a,b):
    c = a+b
    return a,b,c

a,_,c = func(2,3) # we don't need store the output "b" here, 
                  # thus we "ignore" it using the "_"
print(a) # 2
print(c) # 5

尽管如此,您也可以只使用

i
来代替 - 这只是使用
_

的约定

0
投票

总结:这不是值得担心的事情。

列表推导式为其执行创建一个函数命名空间,包括局部变量的槽。当你写下:

[random.randrange(0, 50) for i in range(10)]

i
是一个局部变量,在理解完成后将被删除。它不会覆盖封闭命名空间中定义的
i
,并且在操作完成后不会占用任何空间。

通常将

_
用于其他地方未使用的变量。这只是一个约定,可以让人们更轻松地阅读您的代码。

© www.soinside.com 2019 - 2024. All rights reserved.