Python元组
来自CloudWiki
元组:轻量级列表
- 列表的功能虽然很强大,但负担也很重,在很大程度上影响了运行效率。有时候我们并不需要那么多功能,很希望能有个轻量级的列表,元组(tuple)正是这样一种类型。
- 从形式上,元组的所有元素放在一对圆括号中,元素之间使用逗号分隔,如果元组中只有一个元素则必须在最后增加一个逗号。
元组创建与元素访问
>>> x = (1, 2, 3) #直接把元组赋值给一个变量 >>> type(x) #使用type()函数查看变量类型 <class 'tuple'> >>> x[0] #元组支持使用下标访问特定位置的元素 1 >>> x[-1] #最后一个元素,元组也支持双向索引 3 >>> x[1] = 4 #元组是不可变的 TypeError: 'tuple' object does not support item assignment >>> x = (3) #这和x = 3是一样的 >>> x 3 >>> x = (3,) #如果元组中只有一个元素,必须在后面多写一个逗号 >>> x (3,) >>> x = () #空元组 >>> x = tuple() #空元组 >>> tuple(range(5)) #将其他迭代对象转换为元组 (0, 1, 2, 3, 4)
- 很多内置函数的返回值也是包含了若干元组的可迭代对象,例如enumerate()、zip()等等。
>>> list(enumerate(range(5))) [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)] >>> list(zip(range(3), 'abcdefg')) [(0, 'a'), (1, 'b'), (2, 'c')]
元组与列表的异同点
- 列表和元组都属于有序序列,都支持使用双向索引访问其中的元素,以及使用count()方法统计指定元素的出现次数和index()方法获取指定元素的索引,len()、map()、filter()等大量内置函数和+、+=、in等运算符也都可以作用于列表和元组。
- 元组属于不可变(immutable)序列,不可以直接修改元组中元素的值,也无法为元组增加或删除元素。
- 元组没有提供append()、extend()和insert()等方法,无法向元组中添加元素;同样,元组也没有remove()和pop()方法,也不支持对元组元素进行del操作,不能从元组中删除元素,而只能使用del命令删除整个元组。
- 元组也支持切片操作,但是只能通过切片来访问元组中的元素,而不允许使用切片来修改元组中元素的值,也不支持使用切片操作来为元组增加或删除元素。
- Python的内部实现对元组做了大量优化,访问速度比列表更快。如果定义了一系列常量值,主要用途仅是对它们进行遍历或其他类似用途,而不需要对其元素进行任何修改,那么一般建议使用元组而不用列表。
- 元组在内部实现上不允许修改其元素值,从而使得代码更加安全,例如调用函数时使用元组传递参数可以防止在函数中修改元组,而使用列表则很难保证这一点。
元组和列表转换
list1= ['Google', 'Taobao', 'Runoob', 'Baidu'] tuple1=tuple(list1) print(tuple1) print(list(tuple1))