将变量添加到元组

时间:2009-09-04 18:36:19

标签: python tuples

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

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

如果有一种有效的方法,请分享......

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

8 个答案:

答案 0 :(得分:298)

元组是不可变的;你不能在施工后改变它们包含的变量。但是,您可以连接或切片它们以形成新元组:

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

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

   name = "Joe"
   age = 40
   location = "New York"
   joe = (name, age, location)

答案 1 :(得分:198)

您可以使用类似t = ()的空白元组开始。您可以使用+添加,但必须添加另一个元组。如果要添加单个元素,请将其设为单个元素: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)

答案 2 :(得分:39)

另一个尚未提及的策略是使用附加到列表,然后在最后将列表转换为元组:

mylist = []
for x in range(5):
    mylist.append(x)
mytuple = tuple(mylist)
print mytuple

返回

(0, 1, 2, 3, 4)

当我必须将元组作为函数参数传递时,我有时会使用它,这通常是numpy函数所必需的。

答案 3 :(得分:19)

在Python 3中,您可以使用*从原始元组和新元素中创建一个新的元组元素。

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

答案 4 :(得分:7)

这很简单:

info_1 = "one piece of info"
info_2 = "another piece"
vars = (info_1, info_2)
# 'vars' is now a tuple with the values ("info_1", "info_2")

但是,Python中的元组是 immutable ,因此一旦创建了变量,就无法将变量附加到元组。

答案 5 :(得分:6)

“一旦信息被添加到数据库,我应该删除元组吗?我的意思是我不再需要元组了。”

没有

通常,没有理由删除任何内容。有一些特殊情况需要删除,但它们非常非常罕见。

只需定义一个窄范围(即类中的函数定义或方法函数),并在范围的末尾对对象进行垃圾收集。

不要担心删除任何内容。

[注。我与一个人 - 除了试图删除对象 - 一直在写“重置”方法来清除它们。就像他要保存它们并重复使用它们一样。也是一个愚蠢的自负。只需忽略您不再使用的对象。如果你用足够小的代码块来定义你的函数,你就没有什么可考虑的了。]

答案 6 :(得分:3)

正如其他答案所述,您无法更改现有元组,但您始终可以创建新元组(可能会从现有元组和/或其他来源中获取部分或全部项目)。

例如,如果所有感兴趣的项目都在标量变量中,并且您知道这些变量的名称:

def maketuple(variables, names):
  return tuple(variables[n] for n in names)

要使用,例如,如本例所示:

def example():
  x = 23
  y = 45
  z = 67
  return maketuple(vars(), 'x y z'.split())

当然,这一个案例更简单地表达为(x, y, z)(甚至可以完全表达名称(23, 45, 67)),但maketuple方法可能在某些更复杂的案例中有用(例如,在计算过程中,动态确定要使用的名称并将其附加到列表中。)

答案 7 :(得分:1)

我很确定python中的语法是:

user_input1 = raw_input("Enter Name: ")
user_input2 = raw_input("Enter Value: ")
info = (user_input1, user_input2)

一旦设置,就无法更改元组。