容器类型
数学运算符
- + : 用于拼接两个容器
- += : 用原容器与右侧容器拼接,并重新绑定变量
- * : 重复生成容器元素
- *= : 用原容器生成重复元素, 并重新绑定变量
- <,<=,>,>=,==,!= : 依次比较两个容器中元素,一但不同则返回比较结果
# 1. 拼接2个容器元素
name = "悟空"
name += "八戒"
print(name) # 悟空八戒
# 2. 容器元素重复
name = "唐僧"
name *= 2
print(name) # 唐僧唐僧
# 3. 比较运算:依次比较两个容器中元素,一但不同则返回比较结果。
print("悟空" > "唐僧")
成员运算符
语法
- 数据 in 序列
- 数据 not in 序列
# 成员运算
# 如果在指定的序列中找到值,返回bool类型
# True
print("悟空" in "我是齐天大圣孙悟空")
print("圣孙" in "我是齐天大圣孙悟空")
# False
print("齐圣" in "我是齐天大圣孙悟空")
print("圣大" in "我是齐天大圣孙悟空")
索引index
定位单个容器元素
# 语法:容器[整数]
# 正向索引从0开始,第二个索引为1,最后一个为len(s)-1
# 反向索引从-1开始,-1代表最后一个,-2代表倒数第二个,以此类推,第一个是-len(s)
message = "我是花果山齐天大圣"
print(message[2]) # 花
print(message[-2]) # 大
print(len(message)) # 9
# 注意:索引不能越界IndexError
# print(message[99])
# print(message[-99])
切片slice
定位多个容器元素
# 容器[开始索引:结束索引:步长]
# 结束索引不包含该位置元素
# 步长是切片每次获取完当前元素后移动的偏移量
# 开始、结束和步长都可以省略
message = "我是花果山齐天大圣"
print(message[2:5:1]) # 花果山
print(message[1: 5]) # 是花果山
print(message[2:-4]) # 花果山
print(message[:-4]) # 我是花果山
print(message[:]) # 我是花果山齐天大圣
print(message[-3:]) # 天大圣
print(message[:2]) # 我是
print(message[-2:]) # 大圣
print(message[-2: 3:-1]) # 大天齐山
print(message[1: 1]) # 空
print(message[2: 5:-1]) # 空
# 特殊:翻转
print(message[::-1]) # 圣大天齐山果花是我
内建函数
- len(x) : 返回序列的长度
- max(x) : 返回序列的最大值元素
- min(x) : 返回序列的最小值元素
- sum(x) : 返回序列中所有元素的和(元素必须是数值类型)
字符串 str
由一系列字符组成的不可变序列容器,存储的是字符的编码值
- 字节
byte
:计算机最小存储单位,等于8位bit
. - 字符:单个的数字,文字与符号。
- 字符集(码表):存储字符与二进制序列的对应关系。
- 编码:将字符转换为对应的二进制序列的过程。
- 解码:将二进制序列转换为对应的字符的过程。
- https://www.runoob.com/python3/python3-string.html
编码方式
- ASCII编码:包含英文、数字等字符,每个字符1个字节
- GBK编码:兼容ASCII编码,包含21003个中文;英文1个字节,汉字2个字节
- Unicode字符集:国际统一编码,旧字符集每个字符2字节,新字符集4字节
- UTF-8编码:Unicode的存储与传输方式,英文1字节,中文3字节
相关函数
- ord() : 返回该字符串的Unicode码。
- chr() : 返回该整数对应的字符串。
- isspace() : 如果字符串中只包含空白,则返回
True
,否则返回False
. - startswith(substr, beg=0,end=len(string)) : 检查字符串是否是以指定子字符串
substr
开头,是则返回True
,否则返回False
。如果beg
和end
指定值,则在指定范围内检查。 - endswith(suffix, beg=0, end=len(string)) : 检查字符串是否以
obj
结束,如果beg
或者end
指定则检查指定的范围内是否以obj
结束,如果是,返回 True,否则返回 False. - find(str, beg=0 end=len(string)) : 检测
str
是否包含在字符串中,如果指定范围beg
和end
,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 - rfind(str, beg=0,end=len(string)) : 类似于
find()
函数,不过是从右边开始查找. - count(str, beg= 0,end=len(string)) : 返回
str
在string
里面出现的次数,如果beg
或者end
指定则返回指定范围内str
出现的次数 - replace(old, new [, max]) : 把将字符串中的
str1
替换成str2
,如果max
指定,则替换不超过max
次。 - lstrip() : 截掉字符串左边的空格或指定字符。
- rstrip() : 删除字符串字符串末尾的空格.
- strip([chars]) : 在字符串上执行
lstrip()
和rstrip()
- lower() : 转换字符串中所有大写字符为小写.
- upper() : 转换字符串中的小写字母为大写
- swapcase() : 将字符串中大写转换为小写,小写转换为大写
- center(width, fillchar) : 返回一个指定的宽度
width
居中的字符串,fillchar
为填充的字符,默认为空格。 - zfill (width) : 返回长度为
width
的字符串,原字符串右对齐,前面填充 0 - ljust(width[, fillchar]) : 返回一个原字符串左对齐,并使用
fillchar
填充至长度width
的新字符串,fillchar 默认为空格。
# 文字 --> 数字
number = ord("我")
print(number) # 25105
# 数字 --> 文字
char = chr(25105)
print(char) # 我
字面值
单引和双引号的区别
- 单引号内的双引号不算结束符
- 双引号内的单引号不算结束符
三引号作用
- 换行会自动转换为换行符
\n
- 三引号内可以包含单引号和双引号
- 作为文档字符串
转义字符
- 改变字符的原始含义
\' \" \n \\ \t
- 原始字符串:取消转义
a = r"C:\newfile\test.py"
字符串格式化
生成一定格式的字符串
# 语法:字符串%(变量)
print("我的名字是%s,年龄是%s" % (name))
类型码
# %s 字符串 %d整数 %f 浮点数
print("%.2d:%.2d"%(2,3)) # 02:03
print("治愈比例为%d%%" % 5) # 治愈比例为5%
print("价格%.2f元" % (5 / 3)) # 价格1.67元
列表 list
由一系列变量组成的可变序列容器
基础操作
# 创建列表
列表名 = []
列表名 = list(可迭代对象)
# 添加元素
列表名.append(元素)
列表.insert(索引,元素)
# 定位元素
列表名[索引] = 元素
变量 = 列表名[索引]
变量 = 列表名[切片] # 赋值给变量的是切片所创建的新列表
列表名[切片] = 容器 # 右侧必须是可迭代对象,左侧切片没有创建新列表
# 正向遍历
for 变量名 in 列表名:
变量名就是元素
# 反向遍历
for 索引名 in range(len(列表名)-1,-1,-1):
列表名[索引名]就是元素
# 删除元素
列表名.remove(元素)
del 列表名[索引或切片]
代码演示
# 1. 创建
# 写法1:列表名 = [数据1,数据2]
# 姓名列表
list_names = ["悟空", "唐三藏", "八戒", "沙僧"]
# 年龄列表
list_ages = [26, 23, 25, 16]
# 写法2:列表名 = list(可迭代对象)
list_name = list("孙悟空")
print(list_name) # ['孙', '悟', '空']
# 2. 添加
# -- 追加:列表名.append(数据)
list_names.append("小白龙")
# -- 插入: 列表名.insert(索引,数据)
list_names.insert(2, "哪吒")
print(list_names) # ['悟空', '唐三藏', '哪吒', '八戒', '沙僧', '小白龙']
# 3. 定位
# -- 索引:容器名[整数]
# -- 读取
element = list_names[-1]
print(element) # 小白龙
# -- 修改
list_names[-1] = "二郎神"
print(list_names) # ['悟空', '唐三藏', '哪吒', '八戒', '沙僧', '二郎神']
# -- 切片:容器名[整数:整数:整数]
# -- 通过切片读取,创建新列表(拷贝)
names = list_names[:3]
print(names) # ['悟空', '唐三藏', '哪吒']
# -- 通过切片修改,遍历右侧数据,依次存入左侧.
list_names[:3] = ["空空", "唐唐", "猪猪"]
# list_names[:3] = 100 # 因为100不能被for
list_names[:3] = "孙悟空"
print(list_names) # ['孙', '悟', '空', '八戒', '沙僧', '二郎神']
# 4. 遍历:操作容器每个元素
# -- 方式1: for 元素 in 容器
# 适用性:从头到尾依次读取
for name in list_names:
print(name)
# -- 方式2:for 索引 in range(开始,结束,间隔):
# 适用性:非从头到尾依次读取
# len(list_names) - 1 是 最大索引(总数-1)
# -1 索引可以去到0
# -1 倒序
# 功能:倒序
for i in range(len(list_names) - 1, -1, -1):
print(list_names[i])
# 功能:修改
for i in range(len(list_names)):
# 文字长度是3的修改为None
if len(list_names[i]) == 3:
list_names[i] = None
print(list_names) # ['孙', '悟', '空', '八戒', '沙僧', None]
# 5. 删除
# -- 方式1:根据元素删除 列表名.remove(元素)
list_names.remove("八戒")
# -- 方式2:根据定位删除 del 容器名[索引或者切片]
del list_names[0]
del list_names[-2:]
print(list_names) # ['悟', '空']
最后一次更新于2022-10-12 14:33
0 条评论