目录
元组 tuple
1.概述
2.可变数据为什么可变
3.不可变数据如何变化
4.基础操作
4.1创建元组
4.2定位元素
4.3遍历元组
4.4序列拆包
5.字符串 str
5.1定义
5.2编码
5.2.1字符集
5.2.2编码方式
5.2.3不可变
5.3序列
5.4字面值
5.4.1单引和双引号的区别
5.4.2三引号作用
5.4.3转义字符
5.4.4格式化
元组 tuple
1.概述
(1)定义:由一系列变量组成的不可变序列容器。
(2)语法:元组名 = (元素1,元素2)
tuple_type = ("剧情","动作")
与列表的区别
元组用于存储无需变化的数据,所以采用"按需分配"的存储机制
列表用于存储需要变化的数据,所以采用"预留空间"的存储机制
2.可变数据为什么可变
存储机制:预留空间 + 自动扩容
自动扩容:开辟更大空间、拷贝原始数据、替换内存地址
3.不可变数据如何变化
每次变化都会产生新数据
tuple_type = ("剧情","动作")
tuple_type += ("惊悚","科幻")
4.基础操作
4.1创建元组
元组名 = (元素1,元素2)
元组名 = 元素1,元素2 # 没有歧义时也可以省略小括号
元组名 = (元素1,) # 只有一个元素时必须添加逗号
name = "悟空", # 小心:是元组不是字符串
4.2定位元素
变量 = 元组名[索引]
变量 = 元组名[切片] # 创建新元组
tuple_type = ("剧情","动作")
tuple_type += ("惊悚","科幻")print(tuple_type[1]) # 动作
print(tuple_type[1:]) # ('动作', '惊悚', '科幻')
4.3遍历元组
从头到尾读取满足条件的元素
for 变量名 in 元组名:
变量名就是元素
tuple_type = ("剧情","动作")
tuple_type += ("惊悚","科幻")for item in tuple_type:print(item)
4.4序列拆包
定义:将序列元素分配给多个变量的操作
作用:操作序列元素更方便,代码更简洁
语法:变量名1,变量名2 = 序列
tuple_name = ["王宝强","周润发","王学兵"]
a,b,c = tuple_nameprint(a,b,c) # 王宝强 周润发 王学兵*a,b = tuple_name
print(a,b) # ['王宝强', '周润发'] 王学兵# 元组转列表*d,=tuple_name
print(d) # ["王宝强","周润发","王学兵"]
练习
"""根据月日,计算是这一年的第几天.
公式:前几个月总天数 + 当月天数5.20 是今天的31+29+31+30+20=141天"""
mon_days=(31,29,31,30,31,30,31,31,30,31,30,31)tuple_num=(1,31)a,b=tuple_num
day_num=bfor item in range(a-1):day_num+=mon_days[item]
print(day_num)
5.字符串 str
5.1定义
由一系列字符编码值组成的不可变序列容器
5.2编码
5.2.1字符集
字符与整数对应关系的集合
(1)ASCII:包含英文、数字等字符
(2)GBK:兼容ASCII,包含21886个中文
(3)Unicode:几乎涵盖全球所有已知字符
5.2.2编码方式
将字符转换为整数的规则
(1)ASCII:每个字符占1个字节
(2)GBK:英文1个字节,中文2个字节
(3)UTF8:英文1个字节,中文3个字节
5.2.3不可变
采取"按需分配"的存储策略,节省内存空间
修改数据时若在原有空间,可能破坏其他数据
所以每次修改都会创建新数据,替换变量中记录的数据地址
name = "封神"
name = "封神第一部"
name = "电影" + nameprint(name) # 电影封神第一部
5.3序列
使用比较运算符时会依次比较两个容器中元素,一但不同则返回结果
print("12w" < "13w") # True
print("2k" < "13w") # False
5.4字面值
5.4.1单引和双引号的区别
(1) 单引号内的双引号不算结束符
(2) 双引号内的单引号不算结束符
print('悟空')
print("悟空")
print('花果山"水帘洞"美猴王孙悟空')
print("""花果山'水帘洞'"美猴王"孙悟空""")
5.4.2三引号作用
(1) 换行会自动转换为换行符\n
(2) 三引号内可以包含单引号和双引号
(3) 作为文档字符串
"""// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永无BUG 永不修改 //
"""
5.4.3转义字符
(1) 定义:改变字符的原始含义。
(2) 语法: \' \" \n \\
print("花果山\"水帘洞\"美猴王孙悟空")
print("花果山水帘洞\n美猴王孙悟空")
print("C:\\newfile\\test.py")
(3) 原始字符串:取消转义。
print(r"C:\newfile\test.py")
5.4.4格式化
(1) 作用:将变量插入到字符串时,可以先用占位符描述格式后插入变量
(2) 占位符:%s 原样输出 %d 整数保留位数 %f 小数保留精度
(3) 语法:格式%(变量)
name = "大圣"
age = "6"
money = 1.2345
hour = 2
minute = 6
print("我叫%s,今年%s岁啦" % (name, age))
print("请支付:%.2f元" % money)
print("%.2d:%.2d" % (hour,minute))