Python 元组
搞懂Python元组的基本操作
元组与列表类似,不同之处有2点:
元组的元素不能修改,包括修改元素值,删除和插入元素;
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号()中用逗号隔开元素即可,格式为:(item1, item2, ... , itemn)
存储的元素包括整数、实数、字符串、列表、元组等数据类型,且同一个元组中数据类型可以不同,例如:(1, '2', [2,'a'], ("abc",3.0))
创建元组
元组可以使用下标索引来访问元组中的值,如下实例:
tuple1 = () # 创建一个空元组
print("空元组数据类型为%s,元组数据:%s。" % (type(tuple1),tuple1))
tuple1 = 10
print("不加逗号,数据类型为%s,元组数据:%s。" % (type(tuple1),tuple1))
animal = "cat", "dog"
print("不加括号,数据类型为%s,元组数据:%s。" % (type(animal),animal))
tuple1 = (10,)
print("加上逗号,数据类型为%s,元组数据:%s。" % (type(tuple1),tuple1))
#将列表转换成元组
list = ['cat', 'dog', 'pig', 'lion']
tuple1 = tuple(list)
print("使用tuple和list创建元组数据:{value}。".format(value=tuple1))
# 将区间转换成元组
range = range(1, 6)
tuple1 = tuple(range)
print("使用tuple和range创建元组数据:{value}。".format(value=tuple1))
执行结果:
空元组数据类型为<type 'tuple'>,元组数据:()。
不加逗号,数据类型为<type 'int'>,元组数据:10。
不加括号,数据类型为<type 'tuple'>,元组数据:('cat', 'dog')。
加上逗号,数据类型为<type 'tuple'>,元组数据:(10,)。
使用tuple和list创建元组数据:('cat', 'dog', 'pig', 'lion')。
使用tuple和range创建元组数据:(1, 2, 3, 4, 5)。
访问元组
和列表一样,我们可以使用2种方式访问元组。
使用索引(Index)访问元组中的某个元素,格式为:tuplename[i]
使用切片访问元组元素,格式为:tuplename[start : end : step]
具体例子如下:
animal = ('dog', 'cat', 'lion', 'pig')
print("animal[0]: ", animal[0])
print("animal[-2]: ", animal[-2])
print("animal[1:3]: ", animal[1:3])
print("animal[-3: -1]",animal[-3: -1])
执行结果:
('animal [0]: ', 'dog')
('animal [-2]: ', 'lion')
('animal [1:3]: ', ('cat', 'lion'))
('animal [-3: -1]', ('cat', 'lion'))
修改元组
元组中的元素不能被修改,这里说的修改是创建一个新的元组去替代旧的元组。具体如下:
tuple1 = (1, 2, 3, 4)
print("原始元组的值{value}".format(value=tuple1))
tuple1 = (5,6,7,8)
print("对元组进行重新赋值{value}".format(value=tuple1))
tuple2 = (1,2,3,4)
print("输出两个累加元组的值{value}".format(value=(tuple1+tuple2)))
print("tuple1元组的值{value}".format(value=tuple1))
print("tuple2元组的值{value}".format(value=tuple2))
执行结果:
原始元组的值(1, 2, 3, 4)
对元组进行重新赋值(5, 6, 7, 8)
输出两个累加元组的值(5, 6, 7, 8, 1, 2, 3, 4)
tuple1元组的值(5, 6, 7, 8)
tuple2元组的值(1, 2, 3, 4)
删除元组
当创建的元组不再使用时,可以通过 del 关键字将其删除,例如:
animal = ('dog', 'cat', 'lion', 'pig')
print(animal)
del animal
print("删除后的元组 tup :{vlaue} ".format(vaule=animal))
执行结果:
('dog', 'cat', 'lion', 'pig')
Traceback (most recent call last):
File "/Users/yf/workspace/firstpython/class/course.py", line 100, in <module>
print ("删除后的元组 tup :{vlaue} ".format(vaule=animal))
NameError: name 'animal' is not defined
输出变量会有异常信息,说明元组animal已被删除。
元组运算符
元组运算符与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
Python表达式 | 结果 | 描述 |
len((1, 2, 3)) | 3 | 计算元素个数 |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 连接 |
('Hi!',) * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | 复制 |
3 in (1, 2, 3) | True | 元素是否存在 |
for x in (1, 2, 3): print (x,) | 1 2 3 | 迭代 |
元组索引和截取
因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:
元组:tuple = ('dog', 'cat', 'lion')
Python 表达式 | 结果 | 描述 |
tuple[2] | 'lion' | 读取第三个元素 |
tuple[-2] | 'cat' | 反向读取,读取倒数第二个元素 |
tuple[1:] | 'cat', 'lion' | 截取元素,从第二个开始后的所有元素。 |
元组内置函数
Python元组包含了以下内置函数
方法及描述 | 实例 | 结果 |
len(tuple) 计算元组元素个数。 | tuple = ('dog', 'cat', 'lion') print(len(tuple)) | 3 |
max(tuple) 返回元组中元素最大值。 | tuple = (1, 2, 7) print(max(tuple)) | 7 |
min(tuple) 返回元组中元素最小值。 | tuple = (1, 2, 7) print(min(tuple)) | 1 |
元组比列表的优势
由于元组与列表非常相似,因此它们都在类似的情况下使用。但是,在列表上实现元组具有某些优点。以下列出了一些主要优点:
1、我们通常将元组用于异构(不同)数据类型,将列表用于同类(相似)数据类型。
2、由于元组是不可变的,因此遍历元组比使用list更快。因此,性能略有提高。
3、包含不可变元素的元组可以用作字典的键。对于列表,这是不可能的。
4、如果您的数据没有变化,将其实现为元组将确保其保持写保护。