gpt4 book ai didi

Python高阶序列赋值?

转载 作者:太空宇宙 更新时间:2023-11-04 10:56:29 25 4
gpt4 key购买 nike

有没有办法在 python 中将名称组合在一起,并整体重复分配给它们?

虽然我们可以做到:

a,b,c = (1,2,3)

我希望能够做这样的事情:

names = a,b,c

*names = (3,2,1) # this syntax doesn't work

a,b,c == (3,2,1) #=> True

是否有内置语法?如果没有,我认为重载其赋值运算符的对象是可能的。在那种情况下,是否有现有的实现,这个概念会不会有任何意想不到的故障模式?

重点不是将名称用作数据,而是能够将实际名称用作变量,每个变量都引用自己的单个项目,并且能够将列表用作列表,并避免代码如下:

a = 1
b = 2
c = 3

sequence = (a,b,c)

最佳答案

您应该在数据抽象方面更上一层楼。您不会尝试通过条目的单独名称来访问这些条目——您宁愿使用 names 来表示整个值集合,因此您可能需要一个简单的列表。

如果您同时想要集合的名称​​和单个项目的名称,那么字典可能是可行的方法:

names = "a b c".split()
d = dict(zip(names, (1, 2, 3)))
d.update(zip(names, (3, 2, 1)))

如果你反复需要这样的东西,你可能想定义一个类,将名称作为属性:

class X(object):
def __init__(self, a, b, c):
self.update(a, b, c)
def update(self, a, b, c)
self.a, self.b, self.c = a, b, c

x = X(1, 2, 3)
x.update(3, 2, 1)
print x.a, x.b. x.c

这反射(reflect)出您想要将 abc 阻止到某些通用结构,但保留通过以下方式单独访问它们的选项姓名。

关于Python高阶序列赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9433021/

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