元组tuple的常见操作
特点
-
以小括号()表示
-
其中第一级元素不可变,有序
val = (1, '1', {1:'1'}, {'1':1}) print(type(val)) print(val) # 结果 <class 'tuple'> (1, '1', {1: '1'}, {'1': 1})
-
可迭代
创建
-
创建一个空元组
val = tuple() print(type(val)) print(val) # 结果 <class 'tuple'> ()
val = () print(type(val)) print(val) # 结果 <class 'tuple'> ()
-
创建含有一个元素的元组
tuple(elmnt) val = tuple('a') print(type(val)) print(val) # 结果 <class 'tuple'> ('a',)
(elmnt,) print(type(val)) print(val) # 结果 <class 'tuple'> ('a',)
- 若直接使用(elmnt)来创建,则创建的是elmnt本身,并不是元组。因为(elmnt)中括号被成运算符的小括号,而不是元组的小括号;所以得加个逗号",",表示创建元组.
-
val1 = (1) val2 = (1,) print(type(val1)) print(type(cal2)) # 结果 <class 'int'> <class 'tuple'>
-
创建含有多个元素的元组
tuple(可迭代对象) val1 = tuple({1, 2, 3}) val2 = tuple([1, 2, 2]) val3 = tuple({1:'2', 1:'a', 'b':3}) print(val1) print(val2) print(val3) print(type(val1)) print(type(val2)) print(type(val3)) # 结果 (1, 2, 3) (1, 2, 2) (1, 'b') <class 'tuple'> <class 'tuple'> <class 'tuple'>
索引取值
tuple[index] 返回index下对应的值,若index越界,抛异常
val = (1, 0, '2', 'a')
print(val[3])
# 结果
a
切片操作
- 从左往右是正向(从0开始逐渐增大,直到最右边元素的下标len-1)
- 从右往左是负向(从-1开始逐渐减小,直到最左边元素的下标-len)
tuple[start:end:direction]
# 从start→end,是一种方向;direction也表示方向(正数表示从左往右,负向表示从右往左)
# 只有当二者的方向一致时,才会进行切片;否则返回空元组
val = (1, 2, 3, 4)
res1 = val[1:3:-1]
res2 = val[-1:-3:1]
print(res1)
print(res2)
# 结果
()
()
val1 = (1, 2, 3, 4)
print(val1[1:3:1])
# 结果
(2, 3)
val2 = (1, 2, 3, 4)
print(val2(-1:-3:-1))
# 结果
(4, 3)
-
正向切片,当end<len-1时,总是左闭右开[);但当指明end>=len或end留空不写时,则最右侧数若在逐增步长可达到,则取最右侧值,否则不取。
val = (1, 2, 3, 4) print(val[1:3:1]) print(val[1:4:1]) print(val[1::1]) print(val[1::2]) print(val[1::5]) # 结果 (2, 3) (2, 3, 4) (2, 3, 4) (2, 4) (2,)
-
负向向切片,当end>-len时,总是右闭左开(];但当指明end<=-len或end留空不写时,则最左侧数若在逐减步长可达到,则取最左侧值,否则不取。
val = (1, 2, 3, 4) print(val[-1:-3:-1]) print(val[-1:-4:-1]) print(val[-1::-1]) print(val[-1::-2]) print(val[-1::-5]) # 结果 (4, 3) (4, 3, 2) (4, 3, 2, 1) (4, 2) (4,)
内置函数
tuple.count(elmnt) 返回tuple中count的个数,若elmnt不在tuple中,则返回0
tuple.index(elmnt) 返回elmnt在tuple中第一次出现的下标(正向索引,从左到右)
len(tuple) 返回tuple的长度
其他
tuple1 + tuple2 返回一个将两个元组中元素放在一起的新元组,但两元组中元素的相对位置不变
(1, 2) + (3, 4) → (1, 2, 3, 4)
tuple * n 返回一个将tuple中所有元素重复n遍的新元组,但是绝对位置不变
(1, 2) * 3 → (1, 2, 1, 2, 1, 2)