首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将变量添加到元组

将变量添加到元组
EN

Stack Overflow用户
提问于 2009-09-04 18:36:19
回答 8查看 711.2K关注 0票数 347

我正在学习Python并创建一个数据库连接。在尝试添加到数据库时,我正在考虑从信息中创建元组,然后将它们添加到数据库中。

我正在做什么:我从用户那里获取信息,并将其存储在变量中。我可以将这些变量添加到元组中吗?你能帮我学一下语法吗?

另外,如果有一个有效的方法,请分享…

edit 让我稍微编辑一下这个问题...我只需要元组将信息输入到数据库中。一旦信息被添加到数据库,我应该删除元组吗?我的意思是我不再需要元组了。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-09-04 18:39:39

元组是不可变的;您不能在构造之后更改它们包含的变量。但是,您可以将它们连接或切片以形成新的元组:

a = (1, 2, 3)
b = a + (4, 5, 6)  # (1, 2, 3, 4, 5, 6)
c = b[1:]  # (2, 3, 4, 5, 6)

当然,还要从现有的值构建它们:

name = "Joe"
age = 40
location = "New York"
joe = (name, age, location)
票数 460
EN

Stack Overflow用户

发布于 2011-12-17 02:43:22

你可以从一个像t = ()这样的空白元组开始。您可以使用+添加,但您必须添加另一个元组。如果您想添加单个元素,请将其设置为singleton:t = t + (element,)。您可以添加多个元素的元组,可以使用或不使用尾随逗号。

>>> t = ()
>>> t = t + (1,)
>>> t
(1,)
>>> t = t + (2,)
>>> t
(1, 2)
>>> t = t + (3, 4, 5)
>>> t
(1, 2, 3, 4, 5)
>>> t = t + (6, 7, 8,)
>>> t
(1, 2, 3, 4, 5, 6, 7, 8)
票数 250
EN

Stack Overflow用户

发布于 2018-06-22 18:34:14

在Python3中,可以使用*从原始元组和新元素创建新的元素元组。

>>> tuple1 = ("foo", "bar")
>>> tuple2 = (*tuple1, "baz")
>>> tuple2
('foo', 'bar', 'baz')

字节码几乎与tuple1 + ("baz",)相同

Python 3.7.5 (default, Oct 22 2019, 10:35:10) 
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def f():
...     tuple1 = ("foo", "bar")
...     tuple2 = (*tuple1, "baz")
...     return tuple2
... 
>>> def g():
...     tuple1 = ("foo", "bar")
...     tuple2 = tuple1 + ("baz",)
...     return tuple2
... 
>>> from dis import dis
>>> dis(f)
  2           0 LOAD_CONST               1 (('foo', 'bar'))
              2 STORE_FAST               0 (tuple1)

  3           4 LOAD_FAST                0 (tuple1)
              6 LOAD_CONST               3 (('baz',))
              8 BUILD_TUPLE_UNPACK       2
             10 STORE_FAST               1 (tuple2)

  4          12 LOAD_FAST                1 (tuple2)
             14 RETURN_VALUE
>>> dis(g)
  2           0 LOAD_CONST               1 (('foo', 'bar'))
              2 STORE_FAST               0 (tuple1)

  3           4 LOAD_FAST                0 (tuple1)
              6 LOAD_CONST               2 (('baz',))
              8 BINARY_ADD
             10 STORE_FAST               1 (tuple2)

  4          12 LOAD_FAST                1 (tuple2)
             14 RETURN_VALUE

唯一的区别是BUILD_TUPLE_UNPACKBINARY_ADD。确切的性能取决于Python解释器实现,但是实现BUILD_TUPLE_UNPACK比实现BINARY_ADD更快是很自然的,因为BINARY_ADD是一个多态运算符,需要额外的类型计算和隐式转换。

票数 52
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1380860

复制
相关文章

相似问题

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