什么是有用的元组?
我现在正在为一个类学习Python,而且我们刚刚将元组作为数据types之一。 我读了维基百科页面,但是,我无法弄清楚这种数据types在实践中会有用。 我能举一些例子,也许在Python中,需要一组不变的数字吗? 这与列表有何不同?
- 只要你想从一个函数返回多个结果就可以使用元组。
- 由于它们是不可变的,因此它们可以用作字典的键(列表不能)。
当您需要将多个数据组合到您的密钥中时,元组可以创build出好的字典密钥,并且不需要为此创build类。
a = {} a[(1,2,"bob")] = "hello!" a[("Hello","en-US")] = "Hi There!"
我主要使用这个特性来创build一个字典,其中的关键字是网格顶点的坐标。 然而,在我的具体情况下,所涉及的花车的确切比较工作得很好,可能并不总是为你的目的[这种情况下,我可能会转换你的浮动到某种定点整数]
我喜欢这个解释 。
基本上,当有一个常量结构(第一个位置总是包含一个types的值,第二个包含另一个值,等等)时,应该使用元组,列表应该用于同类值列表。
当然总是有例外,但这是一个很好的一般指导原则。
当你总是把两个或更多的对象作为一个集合来处理时,我觉得它们很有用。
元组和列表通常具有相同的用途。 不变数据types通常有很多好处,主要是关于并发问题。
所以,当你有一个本质上不易变的列表,你需要保证没有消费者改变它,你可以使用一个元组。
典型的例子是像公司部门,类别等应用程序中的固定数据。如果这个数据发生变化,通常是单个生产者重新生成元组。
一个列表总是可以replace一个元组,就function而言(除了显然,作为一个字典中的键)。 但是,元组可以使事情变得更快。 例如,在Java中不可变的string也是如此 – 什么时候你需要不能改变你的string? 决不!
我刚刚读了一篇关于限制你为了制作更好的节目而可以做些什么的体面的讨论; 为什么函数式编程很重要
一个元组对于存储多个值很有用。当你注意到一个元组就像一个不可变的列表 – 例如一旦创build了,你就不能添加/删除/交换元素。
不可变的一个好处是,因为元组的大小是固定的,所以允许运行时间执行某些优化。 当在返回值或函数参数的上下文中使用tupple时,这是特别有利的。
除了像string%操作和多个返回值这样的语法要求之外,我使用元组作为轻量级类的一种forms。 例如,假设您有一个对象将一个不透明的cookie传递给调用者,然后将其传递给另一个方法。 元组是将多个值打包到该cookie中的好方法,而不必定义一个单独的类来包含它们。
尽pipe如此,我试图对这种特殊用途进行审慎。 如果cookies在整个代码中被广泛使用,最好创build一个类,因为它有助于logging它们的使用。 如果他们只用于一个地方(例如一对方法),那么我可能会使用一个元组。 在任何情况下,因为它是Python,所以可以从一个元组开始,然后将其更改为一个自定义类的实例,而不必更改调用方中的任何代码。
元组是一系列值。 这些值可以是任何types,并且它们被整数索引,所以元组不像列表。 最重要的区别是元组是不可变的。
元组是逗号分隔的值列表:
t = 'p', 'q', 'r', 's', 't'
把元组括在括号里是一个很好的习惯:
t = ('p', 'q', 'r', 's', 't')