- images
- results
- .gitignore
- 1.1概论.ipynb
- 1.2 环境配置.pdf
- 1.3数据类型.ipynb
- 1.4 人机交互.ipynb
- 1.5 对象与变量.ipynb
- 1.6 编码与命名规范.ipynb
- 2.1 数值类型.ipynb
- 2.2 数值类型转换.ipynb
- 2.3 数值元算.ipynb
- 2.4常用数学运算函数.ipynb
- 2.5 math 模块及其应用.ipynb
- 2.6.1 逻辑值测试.ipynb
- 2.6.2 成员运算.ipynb
- 2.6.3 比较运算.ipynb
- 2.6.4 布尔运算.ipynb
- 2.6.5 运算优先级.ipynb
- 2.ipynb
- 3.1 流程控制结构.ipynb
- 3.3.1 for 循环语句.ipynb
- 3.3.3 rang.ipynb
- 3.3.3 while 循环语句.ipynb
- 3.4 and 3.5 分支结构和条件.ipynb
- 3.6 and 3.7 .ipynb
- 3.9 异常处理.ipynb
- 4 函数和模块化编程.ipynb
- 4.1 函数的定义、调用与返回值.ipynb
- 4.2 函数的参数传递.ipynb
- 4.3 变量的作用域.ipynb
- 4.4 匿名函数.ipynb
- 4.5 递归.ipynb
- 4.6 内置函数.ipynb
- 4.7 模块化程序设计.ipynb
- 5.1 序列通用操作.ipynb
- 5.1.1 索引.ipynb
- 5.1.2 切片.ipynb
- 5.1.3 序列拼接与重复.ipynb
- 5.1.4 成员测试.ipynb
- 5.2.1 字符串的创建.ipynb
- 5.2.2 字符串常量.ipynb
- 5.2.4 字符串的遍历.ipynb
- 5.2.5 文件遍历.ipynb
- 5.2.6 字符串的处理方法.ipynb
- 5.2.7 字符串格式化.ipynb
- 5.2.8 转义字符.ipynb
- 5.3 random 模块及其应用.ipynb
- 6.1 元组.ipynb
- 6.2 列表.ipynb
- 6.2.1 列表的创建.ipynb
- 6.2.2 列表的更新.ipynb
- 6.2.3 列表的删除.ipynb
- 6.2.4 列表的排序.ipynb
- 6.2.5 列表赋值与复制.ipynb
- 6.2.6 列表推导式.ipynb
- 6.2.8 常用内置函数.ipynb
- 6.2.9 列表嵌套及其排序.ipynb
- 6.3 列表综合应用.ipynb
- 7.1.1 集合的创建.ipynb
- 7.1.2可变集合类型的操作.ipynb
- 7.1.3 成员关系.ipynb
- 7.1.4 集合关系.ipynb
- 7.1.5 集合运算.ipynb
- 7.2.1 字典创建.ipynb
- 7.2.2 获取字典值.ipynb
- 7.2.3 修改字典值.ipynb
- 7.2.4内置函数与方法.ipynb
- 7.2.5字典排序输出.ipynb
- 7.3 集合与字典的应用.ipynb
- 8 中 numpy 概述.ipynb
- 8 中panda 库.ipynb
- 8.1 文件的打开与关闭.ipynb
- 8.2 文件读写操作.ipynb
- 8.3 文件的应用.ipynb
- 8.4 numpy 文件操作.ipynb
- 8.4.2 and 3.ipynb
- 8.5.1 pandas文件读写.ipynb
- 8.5.2 and 3 and 4.ipynb
- 9.1 matplotlib 线性图.ipynb
- 9.1.5 数据文化绘图.ipynb
- 9.2 非线性图.ipynb
- 9.3 词云.ipynb
- _overview.md
- _readme.ipynb
- coding_here.ipynb
- dream.png
- score.txt
- score_total.csv
- 成绩分析综合.json
6.1 元组.ipynb @master — view markup · raw · history · blame
6.1 元组¶
元组:组合数据类型之一,使用一对圆括号“( )”来存放一组数据,数据项之间用逗号“,”隔开。
元组是序列类型数据的一种,和列表非常相像,可以用来存储一组数据。
输出时,元组都要由圆括号标注,这样才能正确地解释嵌套元组。输入时,圆括号可有可无
__元组和列表最大的区别__在于:列表是__可变数据类型__(mutable),而元组是__不可变数据类型__(immutable)。 元组数据产生后,其内部元素无法增加、删除和修改,可近似将元组看作为“常量列表”。元组中的每个数据项称为一个元素,各元素类型可以相同,也可以不同,也可以将列表或元组作为元组的元素。
如下例所示:创建的三个元组中,tupa中有5个整型数据,tupb中有4个字符串型数据,tupc中有4个元素,其中包括2个字符串型数据、1个整型数据和1个列表。
tupa = (1, 2, 3, 4, 5)
tupb = ('湖北', '河北', '山东', '山西')
tupc = ('Susan', 'Female', 19, [85, 74, 99, 89, 92])
print(tupa)
print(tupb)
print(tupc)
元组是序列类型,因此支持使用__切片__的方法访问元组中的元素,但不能使用切片的方法修改、增加或删除元组中的元素。
tupa = (1, 2, 3, 4, 5)
print(tupa[1:3])
元组切片得到的是一个新的元组,其中的数据也不能被修改和删除。
tupa = (1, 2, 3, 4, 5)
tupa[1] = 10 #错误操作,将元组中的元素进行修改会导致TypeError
使用__del__命令可以删除整个元组,但不能用del删除元组中的元素。
tupa = (1, 2, 3, 4, 5)
del tupa #可以删除整个元组
print(tupa) #删除后的元组无法访问,会导致NameError
Python 中有一些针对元组的优化策略,对元组的访问和处理速度远快于列表。当一组数据仅被用于遍历或类似操作,而不进行任何修改操作时,一般建议应用处理速度更快的元组而不用列表。 当程序运行需要的传递参数时,可以使用元组,以避免传递的参数在函数中被修改。
元组的创建有以下几种方法:
- 用一对空的圆括号“()”或无参数的tuple()函数创建一个空元组。例如:()和tuple()
- 只有一个单独元素的元组可以通过在元素后加逗号来构建,例如:a, 或 (a,)
- 用逗号分隔的多个元素,例如:a,b,c 或 (a,b,c)
- 用内置的tuple()函数,参数为空或可迭代对象,例如:tuple() 或 tuple(iterable)。
t1 = (1, 2, 3, 4, 5) # 生成一个元组(1, 2, 3, 4, 5)并赋值给T1
t2 = 1, 2, 3, 4, 5 # 生成一个元组(1, 2, 3, 4, 5)并赋值给T2
print(t1,t2) # t1,t2相同(1, 2, 3, 4, 5) (1, 2, 3, 4, 5)
t3 = (1, ) # 生成一个元组(1, ) 并赋值给T3,(1, ) 不同于(1), (1) 相当于整数1
t4 = 1, # 生成一个元组(1, ) 并赋值给T4
print(t3,t4) # t3,t4相同,(1,) (1,)
t5 = () # 生成一个空元组 () 并赋值给 T5
t6 = tuple() # 使用元组生成器产生一个空元组赋值给T6
print(t5,t6) # t5,t6相同,() ()
t7 = tuple([0,1,2]) # 将一个列表转换为元组(1, 2, 3)赋值给T7
t8 = tuple(range(3)) # 将一个可遍历对象转换为元组(0, 1, 2)赋值给T8
print(t7,t8) # t7,t8相同(0, 1, 2) (0, 1, 2)
当元组的元素包含列表等可变元素时,情况有些特殊,虽然不可直接改变元组元素的值,但可以修改作为元素的列表的值。
t = (1,2,[3,4])
print(t[2])
t[2][0]=68
print(t)
# t[1] = 0
# print(t) # 修改元组中列表(1, 2, [3, 0])
# # t[2].append(10)
# # print(t) # 修改元组中列表(1, 2, [3, 0, 10])
因为元组数据是不可变类型的,使用__dir(tuple)或dir(元组名)__可以看到,除“魔法方法”外,元组的内置方法非常少,只有两个:count和index,其用法和含义与列表完全相同。
dir(tuple)
区别一个对象是可变类型还是不可变类型,可以通过dir 函数查看其是否有“hash”魔法方法,或者说是否可以使用Python内置hash方法对其求“哈希值”。如下示例:
print(hash((1, 2, 3))) # 元组数据可哈希,输出该数据的哈希值
print(hash([1, 2, 3])) # 列表不可哈希,抛出错误TypeError: unhashable type: 'list'
由上例可以看到,元组数据是可哈希的,为不可变数据类型;而列表数据是不可哈希的,为可变数据类型。