gpt4 book ai didi

python - 有没有一种Python式的方法可以将函数应用于多个现有变量?

转载 作者:行者123 更新时间:2023-12-01 08:40:25 26 4
gpt4 key购买 nike

我一直在重组我的一个项目,使其更加优雅和清晰。我已经达到了想要将函数应用于多个变量的地步,从而转换变量的值。令我沮丧的是,我意识到我使用的 for 循环没有改变变量的值。

例如:

    def change_value(x):
x = x * 2
return x
a = 5
b = 10
c = 15

for x in (a,b,c):
x = change_value(x)

print(a) #a doesn't actually change.

我想这样做的原因是因为我创建了几个数据集和一个 reshape 它们的方法。我不想在自己的行上通过函数显式传递每个变量,而是想找到一种迭代方法。

最佳答案

这不起作用,因为 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}

将它们分组是否合适需要更多上下文来说明,但如果它们都需要由同一函数映射,那么对我来说,这就是一个强有力的指标,表明它们可能应该分组。

关于python - 有没有一种Python式的方法可以将函数应用于多个现有变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53530316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com