5.8.1 创建元组创建元组有2种方式一是使用逗号将元素分隔二是使用小括号将元素包裹且元素之间使用逗号分隔。强烈推荐读者使用第2种方式。示例代码如下# 资源包\Code\chapter5\5.8\0542.py # 使用逗号将数据分隔 tp1 1, 6.66, name, None print(tp1) # type()函数用来返回数据类型元组的输出结果为class tuple print(type(tp1)) # 使用小括号将数据包裹且数据之间使用逗号分隔 tp2 (1, 6.66, name, None) print(tp2) # type()函数用于返回数据类型元组的输出结果为class tuple print(type(tp2))有一点需要重点强调即创建的元组中只有一个数据的时候无论使用上述哪种方式创建只要该数据之后没有逗号则创建的不是元组而是一个整数所以读者在创建只包含一个数据的元组时一定要注意在该数据之后加上逗号。示例代码如下# 资源包\Code\chapter5\5.8\0543.py tp 1, # 此种方式创建的是元组输出结果为class tuple (1,) print(type(tp), tp) tp (1,) # 此种方式创建的是元组输出结果为class tuple (1,) print(type(tp), tp) tp (1) # 此种方式创建的是整数输出结果为class int 1 print(type(tp), tp)5.8.2 访问元组中的元素1.索引访问与字符串和列表的索引一样元组的索引也是从0开始第1个元素的索引为0第2个元素的索引为1同样也可以取负值表示从末尾提取最后1个元素的索引为-1倒数第2元素的索引为-2。索引访问分为指定索引访问和切片索引访问。其中切片索引获取的元组包括开始索引的元素但不包括结束索引的元素。示例代码如下# 资源包\Code\chapter5\5.8\0544.py tp (1, 2, 3, 4, 5, 6, 7, 8, 9) # 通过指定索引访问获取元组中的第4个元素即4 print(tp[3]) # 通过指定索引访问获取元组中的倒数第2个元素即8 print(tp[-2]) # 通过切片索引访问获取从索引1开始到索引4的元素即(2, 3, 4, 5) print(tp[1:5]) # 通过切片索引访问获取从索引3开始一直到最后的元素即(4, 5, 6, 7, 8, 9) print(tp[3:]) # 通过切片索引访问获取从索引0开始到索引5的元素即(1, 2, 3, 4, 5, 6) print(tp[:6]) # 通过切片索引访问获取元组中的全部元素即(1, 2, 3, 4, 5, 6, 7, 8, 9) print(tp[:])2.循环遍历可以通过使用for循环获取元组中的每一个元素。示例代码如下# 资源包\Code\chapter5\5.8\0545.py tp (1, 2, 3, 4, 5, 6, 7, 8, 9) for val in tp: print(val)3.拆包访问在Python中元组同样支持拆包访问。示例代码如下# 资源包\Code\chapter5\5.8\0546.py tp (1, 2, 3, 4, 5, 6, 7) n1, n2, n3, *n tp # 输出结果为1 2 3 [4, 5, 6, 7] print(n1, n2, n3, n)5.8.3 元组的特性元组属于不可变的数据类型其元素不允许被修改。所以元组与列表不一样元组不具有添加、删除和修改其内部元素的方法。示例代码如下# 资源包\Code\chapter5\5.8\0547.py tp (1, 2, 3, 4, 5, 6, 7) # 报错 tp[0]1005.8.4 元组的相关操作1.连接元组中的元素是不允许修改的但可以对元组进行连接组合成一个新的元组。示例代码如下# 资源包\Code\chapter5\5.8\0548.py tp1 (1, 2, 3) tp2 (a, b, c) tp tp1 tp2 # 输出结果为(1, 2, 3, a, b, c) print(tp)2.删除元组中的元素是不允许删除的但可以使用del语句来删除整个元组。示例代码如下# 资源包\Code\chapter5\5.8\0549.py tp (1, 2, 3) del tp # 由于元组已经被删除所以报错提示tp未定义 print(tp)5.8.5 元组推导式元组推导式提供了一种简明扼要的方法来创建元组。其语法格式如下( 表达式 for语句 [, if 语句 [, for语句 ...] ] )元组推导式的结构是在一个小括号里包含一个表达式之后是一个for语句然后是0个或多个if语句或for语句注意与列表推导式不同的是在这个以if语句和for语句为上下文的表达式运行完成之后返回的是一个生成器对象需要使用tuple()函数来获得新的元组。其执行顺序为左边第二个语句是最外层依次往右进一层左边第一条语句是最后一层。示例代码如下# 资源包\Code\chapter5\5.8\0550.py # 元组推导式的方式 tp1 (x * y for x in range(1, 5) if x 2 for y in range(1, 4) if y 3) # 输出结果为一个生成器对象 print(tp1) # 输出结果为(3, 6, 4, 8) print(tuple(tp1)) # 元组推导式的执行顺序 lt[] for x in range(1, 5): if x 2: for y in range(1, 4): if y 3: lt.append(x * y) # 输出结果同样为(3, 6, 4, 8) print(tuple(lt))
第5章 变量类型-5.8 元组
5.8.1 创建元组创建元组有2种方式一是使用逗号将元素分隔二是使用小括号将元素包裹且元素之间使用逗号分隔。强烈推荐读者使用第2种方式。示例代码如下# 资源包\Code\chapter5\5.8\0542.py # 使用逗号将数据分隔 tp1 1, 6.66, name, None print(tp1) # type()函数用来返回数据类型元组的输出结果为class tuple print(type(tp1)) # 使用小括号将数据包裹且数据之间使用逗号分隔 tp2 (1, 6.66, name, None) print(tp2) # type()函数用于返回数据类型元组的输出结果为class tuple print(type(tp2))有一点需要重点强调即创建的元组中只有一个数据的时候无论使用上述哪种方式创建只要该数据之后没有逗号则创建的不是元组而是一个整数所以读者在创建只包含一个数据的元组时一定要注意在该数据之后加上逗号。示例代码如下# 资源包\Code\chapter5\5.8\0543.py tp 1, # 此种方式创建的是元组输出结果为class tuple (1,) print(type(tp), tp) tp (1,) # 此种方式创建的是元组输出结果为class tuple (1,) print(type(tp), tp) tp (1) # 此种方式创建的是整数输出结果为class int 1 print(type(tp), tp)5.8.2 访问元组中的元素1.索引访问与字符串和列表的索引一样元组的索引也是从0开始第1个元素的索引为0第2个元素的索引为1同样也可以取负值表示从末尾提取最后1个元素的索引为-1倒数第2元素的索引为-2。索引访问分为指定索引访问和切片索引访问。其中切片索引获取的元组包括开始索引的元素但不包括结束索引的元素。示例代码如下# 资源包\Code\chapter5\5.8\0544.py tp (1, 2, 3, 4, 5, 6, 7, 8, 9) # 通过指定索引访问获取元组中的第4个元素即4 print(tp[3]) # 通过指定索引访问获取元组中的倒数第2个元素即8 print(tp[-2]) # 通过切片索引访问获取从索引1开始到索引4的元素即(2, 3, 4, 5) print(tp[1:5]) # 通过切片索引访问获取从索引3开始一直到最后的元素即(4, 5, 6, 7, 8, 9) print(tp[3:]) # 通过切片索引访问获取从索引0开始到索引5的元素即(1, 2, 3, 4, 5, 6) print(tp[:6]) # 通过切片索引访问获取元组中的全部元素即(1, 2, 3, 4, 5, 6, 7, 8, 9) print(tp[:])2.循环遍历可以通过使用for循环获取元组中的每一个元素。示例代码如下# 资源包\Code\chapter5\5.8\0545.py tp (1, 2, 3, 4, 5, 6, 7, 8, 9) for val in tp: print(val)3.拆包访问在Python中元组同样支持拆包访问。示例代码如下# 资源包\Code\chapter5\5.8\0546.py tp (1, 2, 3, 4, 5, 6, 7) n1, n2, n3, *n tp # 输出结果为1 2 3 [4, 5, 6, 7] print(n1, n2, n3, n)5.8.3 元组的特性元组属于不可变的数据类型其元素不允许被修改。所以元组与列表不一样元组不具有添加、删除和修改其内部元素的方法。示例代码如下# 资源包\Code\chapter5\5.8\0547.py tp (1, 2, 3, 4, 5, 6, 7) # 报错 tp[0]1005.8.4 元组的相关操作1.连接元组中的元素是不允许修改的但可以对元组进行连接组合成一个新的元组。示例代码如下# 资源包\Code\chapter5\5.8\0548.py tp1 (1, 2, 3) tp2 (a, b, c) tp tp1 tp2 # 输出结果为(1, 2, 3, a, b, c) print(tp)2.删除元组中的元素是不允许删除的但可以使用del语句来删除整个元组。示例代码如下# 资源包\Code\chapter5\5.8\0549.py tp (1, 2, 3) del tp # 由于元组已经被删除所以报错提示tp未定义 print(tp)5.8.5 元组推导式元组推导式提供了一种简明扼要的方法来创建元组。其语法格式如下( 表达式 for语句 [, if 语句 [, for语句 ...] ] )元组推导式的结构是在一个小括号里包含一个表达式之后是一个for语句然后是0个或多个if语句或for语句注意与列表推导式不同的是在这个以if语句和for语句为上下文的表达式运行完成之后返回的是一个生成器对象需要使用tuple()函数来获得新的元组。其执行顺序为左边第二个语句是最外层依次往右进一层左边第一条语句是最后一层。示例代码如下# 资源包\Code\chapter5\5.8\0550.py # 元组推导式的方式 tp1 (x * y for x in range(1, 5) if x 2 for y in range(1, 4) if y 3) # 输出结果为一个生成器对象 print(tp1) # 输出结果为(3, 6, 4, 8) print(tuple(tp1)) # 元组推导式的执行顺序 lt[] for x in range(1, 5): if x 2: for y in range(1, 4): if y 3: lt.append(x * y) # 输出结果同样为(3, 6, 4, 8) print(tuple(lt))