我无法理解元组中的这段代码
I'm not able to understand this code in tuple
init_tuple = [(0, 1), (1, 2), (2, 3)]
result = sum(n for _, n in init_tuple)
print(result)
这段代码的输出是 6。有人可以解释一下它是如何工作的吗?
您的代码提取每个元组并对第二个位置(即 [1])中的所有值求和。
如果循环重写,可能更容易理解:
init_tuple = [(0, 1), (1, 2), (2, 3)]
result = 0
for (val1, val2) in init_tuple:
result = result + val2
print(result)
表达式(n for _, n in init_tuple)
是一个生成器表达式。您可以迭代这样的表达式以获取它生成的所有值。在那种情况下,它读作:生成 init_tuple
.
的每个元组的第二个组件
(_
注意:这里的_
代表元组的第一个组成部分。在python中很常见,当你不关心时使用这个名字它引用的变量(即,如果你不打算使用它)就像这里的情况一样。另一种编写生成器的方法是 (tup[1] for tup in init_tuple)
)
您可以使用 for 循环遍历生成器表达式。例如:
>>> for x in (n for _, n in init_tuple):
>>> print(x)
1
2
3
当然,由于您可以迭代生成器表达式,因此您可以像在代码中所做的那样对其求和。
为了更好地理解,请先看看这个。
init_tuple = [(0, 1), (1, 2), (2, 3)]
sum = 0
for x,y in init_tuple:
sum = sum + y
print(sum)
现在,你可以看到上面的代码所做的是它计算元组的第二个元素的总和,它等同于你的代码,因为两者做同样的工作。
for x,y in init_tuple:
x 保存元组的第一个值,y 保存元组的第二个值,在第一次迭代中:
x = 0, y = 1,
然后在第二次迭代中:
x = 1, y = 2 等等。
在您的情况下,您不需要元组的第一个元素,因此您只需使用 _ 而不是使用 variable.
init_tuple = [(0, 1), (1, 2), (2, 3)]
result = sum(n for _, n in init_tuple)
print(result)
这段代码的输出是 6。有人可以解释一下它是如何工作的吗?
您的代码提取每个元组并对第二个位置(即 [1])中的所有值求和。
如果循环重写,可能更容易理解:
init_tuple = [(0, 1), (1, 2), (2, 3)]
result = 0
for (val1, val2) in init_tuple:
result = result + val2
print(result)
表达式(n for _, n in init_tuple)
是一个生成器表达式。您可以迭代这样的表达式以获取它生成的所有值。在那种情况下,它读作:生成 init_tuple
.
(_
注意:这里的_
代表元组的第一个组成部分。在python中很常见,当你不关心时使用这个名字它引用的变量(即,如果你不打算使用它)就像这里的情况一样。另一种编写生成器的方法是 (tup[1] for tup in init_tuple)
)
您可以使用 for 循环遍历生成器表达式。例如:
>>> for x in (n for _, n in init_tuple):
>>> print(x)
1
2
3
当然,由于您可以迭代生成器表达式,因此您可以像在代码中所做的那样对其求和。
为了更好地理解,请先看看这个。
init_tuple = [(0, 1), (1, 2), (2, 3)]
sum = 0
for x,y in init_tuple:
sum = sum + y
print(sum)
现在,你可以看到上面的代码所做的是它计算元组的第二个元素的总和,它等同于你的代码,因为两者做同样的工作。
for x,y in init_tuple:
x 保存元组的第一个值,y 保存元组的第二个值,在第一次迭代中:
x = 0, y = 1,
然后在第二次迭代中:
x = 1, y = 2 等等。 在您的情况下,您不需要元组的第一个元素,因此您只需使用 _ 而不是使用 variable.