元组
tuple
是用圆括号()
括起来,其中的元素之间用逗号
隔开。元组中的元素是任意类型的。元组可以看做融合了列表或者字符串属性的一种序列。
- 元组是序列,和列表或者字符串比较类似,索引和切片等方法仍然适用
- 元组中的元素不能更改
- 如果元组中只有一个元素,最后需要有逗号
- 元组中的元素是任意类型,和列表类似,不同于字符串
- 所有在列表中可以修改列表的方法,在元组中全部失效
元组操作
tup = () # 创建空元组
print(tup)
tup1 = ('python', ) # 创建单个元组,必须在最后带上逗号
print(tup1)
tup2 = (1, 2, (3, ), ["python", "java", "php"]) # 创建多重元组
print(tup2[0]) # 返回元组中的第一个元素
print(tup2[:1]) # 这里1表示索引编号,从编号0到1,只有第一个元素,返回值的形式仍为元组
print(tup2[1::2]) # 从编号1开始,到结束,步长为2
print(tup2[::-1]) # 反转元组
print(tup2[3][1]) # 元组中第一层标号为3,第二层中标号为1的元素
print(len(tup2)) # 元素的长度
print(tup2.index(2)) # 返回元组中元素2的索引标号
del tup2 # 元组中单个元素不能删除,只能删除整个元组
# 结果如下:
()
('python',)
1
(1,)
(2, ['python', 'java', 'php'])
(['python', 'java', 'php'], (3,), 2, 1)
java
4
1
元组和列表转化
元组和列表之间是互通的,通过
list()
和tuple()
能够实现列表和元组之间的转化。通过dir(tuple)
能够查看元组对象的方法。
>>> dir(tuple)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
- _iter_:说明元组是可迭代的
count(),index()
:能够应用于序列
# 定义一个元组t
t = (1, 123, ["python", "java"], (123, 'xiaoming'))
list_t = list(t) # tuple--->list
print(list_t)
tuple_t = tuple(list_t) # list---->tuple
print(tuple_t)
注意:
元组本身不能被修改,但是可以将元组先转化成列表,通过列表修改之后再转化成元组。tuple--->list--->tuple
# 定义一个元组t
t = (1, 123, ["python", "java"], (123, 'xiaoming'))
list_t = list(t) # 元组转换成列表
list_t[0] = 2 # 通过列表修改元素
tuple_t = tuple(list_t) # 再转换成元组
print(tuple_t)
(2, 123, ['python', 'java'], (123, 'xiaoming'))
元组用途
- 元组表列表操作速度快;在进行遍历操作的时候,请用元组代替列表
- 如果对不需要修改的数据进行“写保护”,即该数据是常量,也要使用元组;如果需要改变这些值,转换为列表进行修改
- 元组在字典中可以当做key来使用,但是列表不可以