首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python高阶序列赋值?

Python高阶序列赋值?
EN

Stack Overflow用户
提问于 2012-02-24 15:09:57
回答 7查看 304关注 0票数 1

有没有一种方法可以在python中将名称组合在一起,并重复地将它们分配给它们?

在我们能够做到的时候:

代码语言:javascript
复制
a,b,c = (1,2,3)

我希望能做这样的事情:

代码语言:javascript
复制
names = a,b,c

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

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

这有内置语法吗?如果不是,我假设有一个重载其赋值操作符的对象是可能的。在这种情况下,是否有一个现有的实现,这一概念是否有任何意外的失败模式?

重点不在于将名称用作数据,而在于能够使用实际名称作为变量,每个变量引用各自的单独项,并能够将列表用作列表,并避免使用以下代码:

代码语言:javascript
复制
a = 1
b = 2
c = 3

sequence = (a,b,c)
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-02-24 15:53:50

这?

代码语言:javascript
复制
>>> from collections import namedtuple
>>> names = namedtuple( 'names', ['a','b','c'] )

>>> thing= names(3,2,1)
>>> thing.a
3
>>> thing.b
2
>>> thing.c
1
票数 1
EN

Stack Overflow用户

发布于 2012-02-24 15:17:08

您应该在数据抽象中提高一级。您并不试图通过条目的单个名称来访问它们--而是使用names来表示整个值集合,因此一个简单的列表可能就是您想要的。

如果同时使用集合的名称和单个项的名称,则可以使用字典:

代码语言:javascript
复制
names = "a b c".split()
d = dict(zip(names, (1, 2, 3)))
d.update(zip(names, (3, 2, 1)))

如果重复需要这样的内容,您可能需要定义一个名称为属性的类:

代码语言:javascript
复制
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

这反映出您希望将abc阻塞到某些公共结构中,但保留按名称单独访问它们的选项。

票数 2
EN

Stack Overflow用户

发布于 2012-02-24 15:12:30

您应该使用

代码语言:javascript
复制
>>> d = {"a": 1, "b": 2, "c": 3}
>>> d.update({"a": 8})
>>> print(d)
{"a": 8, "c": 3, "b": 2}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9433021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档