Python:对于循环变量,如何分配它们?

2024-04-18 07:19:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道如何循环变量,给它们赋值。在

a = 1; b = 2; c = 3 
for x in [a, b, c]:
  print(x)

1
2
3

for x in [a, b, c]:
  x = x * 2

for x in [a, b, c]:
  print(x)

1
2
3

Tags: inforprint赋值
3条回答

这应该可以做到:

abc = [1, 2, 3]

for i in range(len(abc)):
    abc[i] *= 2

您可以使用列表理解和元组解包。在

a = 1
b = 2
c = 3

a, b, c = [i * 2 for i in [a, b, c]]

print(a, b, c)
# 2 4 6

当你迭代一个列表时,像这样:for x in [a, b, c]:你在做什么 正在做的是告诉python解释器创建一个变量x,该变量被反复分配不同的值。这些值是ab和{}的值。在

这里需要注意的是,x不引用ab和{}。也就是说,x不是{}的别名。这是一个不同的变量,刚好有相同的值。在

你可以这样想:

有一个人叫First Middle Last。他的名字是First,他的中间名是Middle,他的第三个名字是Last。这个人穿着一件红色的毛衣。在

不管有人叫他First还是Middle,这都无关紧要,这两个名字都指同一个人。如果你说First now wears a blue sweater,然后问What colour is Middle's sweater,答案应该是blue。这是因为First和{}都指同一个人。在

然而,这并不是在迭代中发生的事情。在您的例子中,x不是到a什么是First。相反,发生的事情更接近于此。在

你有三个人,JohnJane和{}(abc)。John有一件blue毛衣,Jane有一件red毛衣,Doe有一件green毛衣。这就是a的值是1b的值是{},而{}的值是{}。在

你一个接一个地问他们,他们的毛衣是什么颜色的。当你发现后,你会说,James, a person different from John, Jane or Doe, now has the same colour sweater。如果你随后改变了詹姆斯毛衣的颜色,这对约翰、简或多伊都没有影响。在

这是一个解释为什么你的代码没有做你想要它做的事情。在

至于修复方法,一种可能的Python式方法是这样做的。在

map(lambda x: x*2, [a, b, c])

更广泛地说,map(transformation, array)。在

让我们看一下代码。如果您使用here,您将找到map的定义。在

如您所见,map是一个内置函数,它接受第一个参数a函数。在我们的例子中,我们希望函数是乘以2。在

为此,我们可以做lambda x: x*2,它定义了一个接受x并返回{}的函数,也可以显式地定义该函数。在

^{pr2}$

不管选择什么,这个想法仍然有效,您将给一个map的第一个参数,该函数以您想要的方式转换输入。在

本例中的输入依次是数组的每个元素。为了使这一点更加明确,让我们逐行执行示例。在

调用map(multiply_by_two, [1, 2, 3])将转换为[multiply_by_two(1), multiply_by_two(2), multiply_by_two(3)],而这又将变成[1 * 2, 2 * 2, 3 * 2]。这将最终在[2, 4, 6]中转换,map(multiply_by_two, [1, 2, 3])调用的结果。在

我希望这能帮助您更好地理解python。在

相关问题 更多 >