文章目录 1. Tuple元组 2. 类型转换 3. 索引取值与切片 4. 遍历元组 5. 获取长度 6. 拼接与复制 7. 成员运算 8. 统计元素 9. 获取索引 10. 练习
1. Tuple元组
1.1 元组
特征 : 使用小括号括起来 , 内部可以存放多个数据 , 元素与元素之间用逗号隔开 , 元素可以是任意数据类型 .
元组与列表类似 , 不同之处在于元组的元素不能修改 , 元素内部的元素类型是可变类型的话支持修改 .
多维元组 : 当元组的元素是一个容器类型时 , 那么这个元组被称为多维元组 , 嵌套几层就是几维元组 .
* 元组只有一个元素的时候元素后面加上一个逗号 , 否则就不是元组 , 而是整型 .
* 推荐所有容器类型 , 无论内部有几个元素 , 末尾要加上逗号 , 尤其是只有一个值得时候 . 变量名 = ( 元素 1 , )
变量名 = ( 元素 1 , 元素 2 , ··· )
省略括号写法 :
变量名 = 元素 1 ,
变量名 = 元素 1 , 元素 2 , ···
t1 = ( )
print ( t1, type ( t1) )
t2 = ( 1 , )
print ( t2, type ( t2) )
t3 = ( 1 )
print ( t3, type ( t3) )
t4 = 1 ,
print ( t4, type ( t4) )
t5 = 1 , 2 , 3
print ( t5, type ( t5) )
( 1 ) 是一个整型 , 整型加厉害就多余了 , 所以提示 : 移除冗余的圆括号 .
1.2 获取元素
元组和元组一样可以按索引取值 .
取值格式:变量 [ 索引 ]
多维元组取值 : 变量 [ 索引 ] [ 索引 ] ···
t1 = ( 1 , [ 'a' , 'b' ] )
print ( t1[ 0 ] )
print ( t1[ 1 ] [ 0 ] )
1.3 修改元素
t1 = ( 5 , )
t1[ 0 ] = 1
运行工具窗口显示 :
Traceback ( most recent call last ) : File "C:\Users\13600\PycharmProjects\test\test.py" , line 3 , in < module > t1 [ 0 ] = 1
# 类型错误 : “tuple”对象不支持项分配
TypeError : 'tuple' object does not support item assignment
* 元组不支持修改元素是因为Tuple的类中没有设置__setitem__属性 .
* 元组不可变是指当前变量存放的元素不可变 , 如果定义的元组最外层变量包含可变类型元素 , 那么这个元组是可变的。
t1 = ( 1 , [ 1 , 2 ] )
print ( t1)
t1[ 1 ] [ 0 ] = 0
t1[ 1 ] [ 1 ] = 'a'
print ( t1)
意外类型 : ( int , int ) 可能的类型 : ( SupportsIndex , list [ int ] ) ( slice , Iterable [ list [ int ] ] )
列表在作为一个容器类型的元素时 , 列表自身的元素是同一个类型的话 , Pycharm 会认为列表该该类型列表 ,
对列队元素修改是 , 期待该元素的新值也是该类型 , 否则会提示警告 . 这个警告可以忽略 .
元素的类型不都是一样的话就不会出现提示 .
2. 类型转换
能被for循环遍历的都可以转换为元组类型 .
str1 = tuple ( 'hello world!' )
list1 = tuple ( [ 'a' , 'b' , 'c' ] )
dic1 = tuple ( { 'k1' : 'v1' , 'k2' : 'v2' } )
set1 = tuple ( ( 1 , 2 , 3 ) ) print ( tuple ( str1) , type ( str1) )
print ( tuple ( list1) , type ( str1) )
print ( tuple ( dic1) , type ( dic1) )
print ( tuple ( set1) , type ( set1) )
运行工具窗口显示 :
( 'h' , 'e' , 'l' , 'l' , 'o' , ' ' , 'w' , 'o' , 'r' , 'l' , 'd' , '!' ) < class 'tuple' >
( 'a' , 'b' , 'c' ) < class 'tuple' >
( 'k1' , 'k2' ) < class 'tuple' >
( 1 , 2 , 3 ) < class 'tuple' >
3. 索引取值与切片
索引取值 : 取一个元素 .
列表中每个元素占一个索引 , 索引从 0 开始 . 切片取值 : 取多个元素 .
取值格式 : 字符串 [ start: stop: step ]
start 起始值参数 : 起始位置 , 从第几位开始取值 .
stop 上限值参数 : 上限的位置 , 只能获取到它的前一索引的值 , 不包含它本身 .
step 步长参数 : 从左往右正向取值 , 步长是负数从右往左反向取值 ( start 与 stop 参数对换 ) . 省略索引 :
省略第一个参数 : 默认参数为 0 , 从索引 0 开始截取 .
省略第二个参数 : 默认惨为列表的长度 , 意味着切片直至列表的末尾 .
省略第三个参数 : 默认为 1 , 从左往右正向取值 .
tuple1 = ( 1 , 2 , 3 , 4 , [ 1 , 2 ] )
print ( tuple1[ 0 ] )
print ( tuple1[ 0 : 2 ] )
print ( tuple1[ - 1 ] )
print ( tuple1[ : ] )
print ( tuple1[ : : - 1 ] )
print ( tuple1[ 4 ] [ 1 ] )
4. 遍历元组
for循环语句可以依次获取元组的元素 .
t1 = ( 1 , 2 , 3 , 4 , [ 1 , 2 ] )
for i in t1: print ( i)
运行工具窗口显示 :
1
2
3
4
[ 1 , 2 ]
5. 获取长度
len ( ) 函数 : 可以获取元组的元素个数 .
tuple1 = ( 1 , 2 , 3 , 4 , [ 1 , 2 ] )
print ( len ( tuple1) )
6. 拼接与复制
符号 作用 示例 + 加号 拼接元组. (1, ) + (2, ) = (1, 2) * 乘号 复制元组元素. (1, ) * 2 = (1, 1)
Python属于强类型语言 , 不能类型的数据是无法互相操作的 .
Python中为了方便程序员的使用 :
使用 + 号 , 让元组与元组将加时 , 表示拼接元组 ( 末尾添加 ) .
使用 * 号 , 让元组与整型将乘时 , 使其不再表示乘法 , 而是复制n次元素 .
6.1 元组的拼接
t1 = ( 1 , )
print ( t1 + ( 2 , ) ) t1 += ( 2 , )
print ( t1)
6.2 元组元素复制
t1 = ( 1 , )
print ( t1 * 2 ) t1 *= 2
print ( t1)
7. 成员运算
in 判断某个个体是否在某个群体当中 , 返回布尔值 .
not in 判断某个个体是否不在某个群体当中 , 返回布尔值 .
t1 = ( 1 , 2 ) print ( 1 in t1) print ( 2 not in t1)
8. 统计元素
. count ( ) 方法 : 统计指定元素的个数 .
tuple1 = ( 1 , 1 , 1 , 4 , [ 5 , 6 ] )
print ( tuple1. count( 1 ) )
9. 获取索引
. index ( ) 方法 : 从左往右查找指定元素,查到就立刻返回索引,元素不存在则报错 .
报错信息:ValueError : tuple . index ( x ) : x not in tuple
tuple1 = ( 1 , 2 , 3 , 4 , [ 5 , 6 ] )
print ( tuple1. index( 1 ) )
10. 练习
1. 什么是元组?它用在何处?
2. 元组不可变指的是元组内的什么不可改变?
3. t = ( 1 , 2 , [ 'AA' ] ) , 针对改元组能够把 'aa' 改成 'AA' ,这与元组不可变是否冲突?