我不知道如何循环变量,为它们赋值。
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
答案 0 :(得分:3)
您可以使用列表理解和元组解包。
a = 1
b = 2
c = 3
a, b, c = [i * 2 for i in [a, b, c]]
print(a, b, c)
# 2 4 6
答案 1 :(得分:0)
这应该可以解决问题:
abc = [1, 2, 3]
for i in range(len(abc)):
abc[i] *= 2
答案 2 :(得分:0)
使用可以使用字典和循环键,并轻松地将值分配给相应的键的值。
答案 3 :(得分:0)
当您遍历列表时,如下所示:for x in [a, b, c]:
你是什么
正在做的是告诉python解释器创建一个重复分配不同值的变量x
。这些值是a
,b
和c
的值。
这里需要注意的是,x
未引用a
,b
和c
。也就是说,x
不是a
的别名,例如。它是一个不同的变量,恰好具有相同的值。
你可以这样想:
存在一个名为First Middle Last
的人。他的名字是First
,他的中间名是Middle
,他的第三个名字是Last
。这个First Middle Last
人穿着一件红色毛衣。
有人称他为First
或Middle
的天气,没关系,这两个名字都指的是同一个人。如果你说First now wears a blue sweater
然后问What colour is Middle's sweater
,答案应该是blue
。这是因为First
和Middle
都指的是同一个人。
然而,这不是您的迭代中发生的事情。在您的情况下,x
不到a
Middle
到First
的内容。相反,发生的事情更类似于此。
您有三个人,John
,Jane
和Doe
(a
,b
,c
)。 John
有blue
件毛衣,Jane
有red
件毛衣,Doe
有green
件毛衣。这是a
的值为1
,b
的值为2
,c
的值为3
。
一个接一个,你问他们,他们的毛衣是什么颜色的。当你发现时,你会说James, a person different from John, Jane or Doe, now has the same colour sweater
。如果你随后改变詹姆斯毛衣的颜色,那么不会影响约翰,简或多伊。
这解释了为什么你的代码没有做你想做的事情。
对于修复,一种可能的pythonic方式就是这样。
map(lambda x: x*2, [a, b, c])
更一般地说,map(transformation, array)
。
让我们回顾一下代码。如果您转到here,您会找到map
的定义。
如您所见,map
是一个内置函数,它将第一个参数作为函数。在我们的例子中,我们希望该函数乘以2。
为此目的,我们可以执行lambda x: x*2
,它定义一个接受作为参数x
的函数并返回x multiplied by two
,或者,我们可以显式定义该函数。
def multiply_by_two(x):
return x * 2
无论选择如何,这个想法仍然存在,你将给出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])
Timeline
调用的结果。
我希望这能帮助你更好地理解python。