持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
python 结构化类型和可变性
到目前为止,我们看到的程序已经涉及三种类型的对象:int,浮点和str。整数类型和浮点数是标量类型。也就是说,这些类型的对象没有可访问的内部结构。相反,str 可以被认为是结构化或非标量类型。我们可以使用索引从字符串中提取单个字符,并使用切片来提取子字符串。
在本章中,我们将介绍另外四种结构化类型。一个是元组,是 str 的简单泛化。其他三个列表,范围和字典更有趣。我们还通过一些示例回到高阶编程的主题,这些示例说明了能够以与其他类型的对象相同的方式处理函数的实用性。
元组
与字符串一样,元组是不可变的元素有序序列。不同之处在于元组的元素不必是字符。各个元素可以是任何类型,并且不必彼此具有相同的类型。
元组类型的文本是通过将逗号分隔的元素列表括在括号内来编写的。例如,我们可以写
查看此示例时,您可能会认为将写入包含单个值 1 的元组 (1)。但是,引用霍尔德曼引用理查德·尼克松的话,“这是错误的。33 由于括号用于对表达式进行分组,因此 (1) 只是写入整数 1 的一种冗长方法。为了表示包含此值的单例元组,我们编写 (1,)。几乎每个使用Python的人都曾经意外地省略了那个烦人的逗号。可以在元组上使用重复。例如,表达式 3*(“a”,2)的计算结果为 (“a”, 2, “a”, 2, “a”, 2)。
与字符串一样,元组可以串联、索引和切片。
第二个赋值语句将名称 t2 绑定到一个元组,该元组包含绑定到的元组和浮点数 3.25。这是可能的,因为元组与Python中的其他所有内容一样,是一个对象,因此元组可以包含元组。因此,第一个打印语句生成输出,
第二个 print 语句打印通过连接绑定到 t1 和 t2 的值(这是一个包含五个元素的元组)生成的值。它产生输出
下一个语句选择并打印串联元组的第四个元素(与在 Python 中一样,索引从 o 开始),之后的语句创建并打印该元组的切片,从而生成输出
for 语句可用于循环访问元组的元素。in 运算符可用于测试元组是否包含特定值。例如,下面的代码
定义相交(t1, t2):
打印(a,2)
多重分配
如果您知道序列的长度(例如,元组或字符串),则可以使用Python的多重赋值语句来提取各个元素。例如,语句 x, y= (3, 4) 会将 x 绑定到 3,将 y 绑定到 4。同样,语句 a, b, c= 'xyz' 将 a 绑定到“x”,将 b 绑定到“y”,将 c 绑定到“z”。
当与返回多个值的函数一起使用时,此机制特别方便。考虑函数定义定义查找极值除数(n1, n2):
多重赋值语句
将min_divisor绑定到 2,max_divisor绑定到 200。