我正在尝试生成随机数列表。我认为现在是使用列表理解来缩短代码的好时机。唯一的问题是现在我有这个未使用的“i”变量。有没有一种方法可以在不需要该变量的情况下编写它,或者我不应该太担心它?
int_list = [random.randrange(0, 50) for i in range(10)]
您可以使用
_
代替,它充当循环中不需要的变量的占位符
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
来代替 - 这只是使用 _
的约定
总结:这不是值得担心的事情。
列表推导式为其执行创建一个函数命名空间,包括局部变量的槽。当你写下:
[random.randrange(0, 50) for i in range(10)]
i
是一个局部变量,在理解完成后将被删除。它不会覆盖封闭命名空间中定义的i
,并且在操作完成后不会占用任何空间。
通常将
_
用于其他地方未使用的变量。这只是一个约定,可以让人们更轻松地阅读您的代码。