那不行,因为
x = change_value(x)
正在重新分配本地
x
变量。这样重新分配本地值不会影响正在迭代的集合。
如果您有一组具有类似用途的变量,那么将它们放在一个结构中可能是合适的。即时的好处是您可以在集合上迭代并轻松地转换值。
如果这些值实际上不需要命名,则可以将它们粘贴到列表中并映射列表:
xs = [1, 2, 3]
changed_xs_comp = [change_value(x) for x in xs]
changed_xs_map = list( map(change_value, xs) )
print(changed_xs_comp, changed_xs_map)) # Prints [2, 4, 6] [2, 4, 6]
或者,如果你想要名字,使用字典:
d = {"a":1, "b":2, "c":3}
changed_d = {k:change_value(d[k]) for k in d}
print(changed_d) # Prints {'a': 2, 'b': 4, 'c': 6}
对它们进行分组是否合适需要更多的上下文来说明,但如果它们都需要由同一个函数映射,这对我来说是一个很强的指标,表明它们很可能应该被分组。