- 集合
- 添加元素
- 删除元素
- 集合间的关系
- 集合间的数据操作
- 集合生成式
- 字符串
- 驻留机制
- 转换字符串
- 查找字符串
- 对齐字符串
- 分割和连接字符串
- 判断字符串
- 比较字符串
可变序列,哈希存储,型似没有值的字典,集合里的值不允许重复
-
创建集合
-
set_demo1 = {值1,值2…}
-
set_demo2 = set()
-
空集合只能用set()定义
-
-
add()
一次添加一个元素
-
update()
一次至少添加一个元素
set_demo = {1, 2, 3} set_demo.update({4, 5, 6}) print(set_demo) # {1, 2, 3, 4, 5, 6}
-
remove()
删除指定元素,不存在则抛出异常
-
discard()
删除指定元素,不存在也不抛出异常
-
pop()
删除任意一个元素,不可添加参数
-
clear()
清空集合
-
集合是否相等:==
-
issubset()
B是A的子集:B.issubset(A);是True/不是False
-
issuperset()
A是B的超集:A.issuperset(B);是True/不是False
-
isdisjoint()
A和B是否没有交集:A.isdisjoint(B);有False/没有True
- 交集:& / interesection()
- 并集:| / union()
- 差集:- / difference()
- 对称差集:^ / symmetric_difference()
set_demo = {表达式 for i in range(范围)【if 条件】}
字符串
不可变的字符序列
-
字符串切片操作:语法格式:[start:end:step]
-
start:切片开始的索引(默认从0开始)
-
end:切片结束的索引(不包含end)(默认字符串长度)
-
step:步长,默认为1;步长为负数,表示从右向左切片;
切片结果产生了新的字符串对象
-
-
字符编码:
- encode():编码
- decode():解码
str_demo = '努力学习的小白P' # 编码 print(str_demo.encode(encoding='GBK')) # 一个汉字占两个字节 print(str_demo.encode(encoding='UTF-8')) # 一个汉字占三个字节 # b'xc5xacxc1xa6xd1xa7xcfxb0xb5xc4xd0xa1xb0xd7P' # b'xe5x8axaaxe5x8ax9bxe5xadxa6xe4xb9xa0xe7x9ax84xe5xb0x8fxe7x99xbdP' # 解码 str_byte1 = str_demo.encode(encoding='GBK') str_byte2 = str_demo.encode(encoding='utf-8') print(str_byte1.decode(encoding='GBK')) print(str_byte2.decode(encoding='UTF-8')) # 努力学习的小白P # 努力学习的小白P
仅保存一份相同且不可变字符串的方法,后续创建相同字符串时,不会开辟新的空间,而是把该字符串的的地址赋给新创建的变量;
驻留的几种情况(交互模式):
- 字符串的长度为0或1时;
- 符合标识符的字符串(含有“_”);
- 字符串只有在编译时进行驻留,而非运行时;
- [-5,256]之间的整数数字
sys中的intern方法强制两个字符串指向同一个对象
注意:PyCharm对字符串进行了优化处理,id一样
转换字符串-
lower()
转换为字符串的小写形式
-
upper()
转换为字符串的大写形式
-
replace(old,new[,max])
返回一个新的字符串,将字符串中的old替换为new;替换不超过max次
str_demo1 = 'My name is 三笠'
str_demo3 = ""","""
str_demo2 = "What is your name?"
str_demo = str_demo1+str_demo3+str_demo2
print(str_demo)
#My name is 三笠,What is your name?
print(str_demo.replace('三笠', '努力学习的小白P'))
#My name is 努力学习的小白P,What is your name?
-
capitalize()
将第一个字符转为大写,把其余字符转换为小写
str_demo = "I just love study" print(str_demo.capitalize()) # I just love study
-
swapcase()
将字符串所有大写字母转成小写字母,把所有小写字母都转成大写字母
-
title()
把每个单词的第一个字符转换为大写,把每个单词的剩余字符转换为小写
-
**find(x) / rfind(x) **
在字符串中查看子串x第一次(最后一次)出现的位置,如果不存在,则返回-1;
str_demo = 'My name is 三笠,What is your name?'
print(str_demo.find('三笠'))
#11
-
index()/ rindex()
在字符串中查找子串第一次(最后一次)出现的位置,如果不存在,则抛出异常
-
center(参数1,参数2)
-
居中对齐;参数1指定宽度;参数2指定填充字符(可选),默认空格;
-
如果设置宽度小于字符串实际宽度,则返回原字符串
-
-
ljust(参数1,参数2)
- 左对齐;参数1指定宽度;参数2指定填充字符(可选),默认空格;
- 如果设置宽度小于字符串实际宽度,则返回原字符串
-
rjust(参数1,参数2)
- 右对齐;参数1指定宽度;参数2指定填充字符(可选),默认空格;
- 如果设置宽度小于字符串实际宽度,则返回原字符串
-
zfill()
- 右对齐;左边用0填充,该方法只接收一个参数,用于指定字符串的宽度,如果指定宽度小于等于字符串长度,返回字符串本身
str_demo1 = '-864' str_demo2 = str_demo1.zfill(8) print(str_demo2) # -0000864
-
strip(x)
用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列;
str_demo = "123努力学习的小白P321"
print (str_demo.strip('123'))
#努力学习的小白P
-
‘x’,join(str)
将元组和列表中的字符串str以指定的字符x(分隔符)连接成一个新的字符串
str_demo = "-"
str_demo2 = ("努力学习的小白P")
print(str_demo.join(str_demo2))
#努-力-学-习-的-小-白-P
-
split(sep[,num])/ rsplit(sep[,num])
通过指定分隔符sep(默认为空格)对字符串从左(从右)进行切分;num指定切分次数;返回值类型为列表
str_demo = "努 力 学 习 的 小 白 P"
print(str_demo.split(' ', 3))
#['努', '力', '学', '习 的 小 白 P']
判断字符串
-
isidentifier()
判断指定的字符串是不是合法的标识符(字母、数字、汉字、下划线);
-
isspace()
判断指定的字符串是不是是否由全部由空白字符组成(回车、换行、水平制表符);
-
isalpha()
判断指定的字符串是否全部由字母组成;
-
isdecimal()
判断指定的字符串是否全部由十进制的数字组成;
-
isnumeric()
判断指定的字符串是否全部由数字组成;
-
isalnum()
判断指定的字符串是否全部由字母和数字组成;
依次比较字符的ascll值
-
ord():返回指定字符的ascll;
-
chr():返回指定ascll的字符;



