字符串和散列类型
一、 字符串
思考一:在之前我们介绍了字符串的格式化方法,那么字符串的方法有哪些呢?
-
字符串的修改
字符串不可修改
字符串和列表不同,不能修改,通常称为字符串的不可变,如果要修改字符串,那么需要调用字符串内置的方法并且重新赋值
replace方法是字符串修改常用的方法,可替换原字符串中的字符,但是并不会修改原字符,只是会返回一个新的对象,字符串所有的修改方法都是如此,不会改变原字符串,会返回一个新的字符串
常见的还有:upper、lower、title、capitalize、strip、rstrip、lstrip等常见的方法 -
字符串的切割
split可以对字符串进行切割,默认是以空格来作为分隔符,切割之后的元素会放在一个列表当中
split还可以指定切割字符,或者是分隔符
还可以指定切割的次数,默认是-1,即不做限制
通常切割之后,对每个字符串处理完成之后,我们会再利用join拼接起来 -
字符串的查找
find和列表中的index类似,可以找到元素在字符串中的索引值,也可以指定查找位置,但是如果找不到元素,不是报错,而是返回-1
字符串内部提供了很多判断方法,可以快速判断字符串是否符合要求,利用这些内置方法,可以节省很多的时间,先了解这些方法即可 -
字符串的转义
这里**\n代表换行的意思
反斜杠+字母往往代表一些计算机中不太好用展示出来的字符**
上面是常见的转义符,要掌握:\n,\t和r
转义符可以来表示不方便打印的字符串,同时r可以去掉转义,在表示路径的时候会更加的方便 -
字符串的编码
ASCll:不能表示其他文字;各个国家都做出自己文字的编码(中国有gbk)
国际标准化组织ISO
UNICODE字符集:企图把地球上所有的语言都包括进去;表示ASCll码字符时太费空间,英语国家不愿意用;出现utf-8、utf-16等编码规则
Python内核(内存中)UNICODE------转成其他编码------外部:终端、.py文件;不同的地方、操作系统等会影响编码------转成UNICODE编码-------python内核(内存中)UNICODE
字符串中自带了encode方法,可以讲字符串编码成自定编码
当然也可以转换回去,调用decode进行解码的方法即可 -
总结
1、字符串修改
掌握:replace、split方法
了解:upper、lower等方法
2、查找
掌握:find、isalpha、isdigit方法
3、字符串转义
掌握:\n,\t,r
4、字符串编码
了解:字符串的编码
二、字典思考一:我们之前知道了列表可以表示几乎所有的数据,但是这里存在一个问题,我们平时的表格都会有一个表头,但是列表里面没有方法表示,这样会使得数据的对应很麻烦,有办法解决吗? 思考二:在学生时代,我们都使用过字典,那么我们是否可以利用这种思维来帮助我们构建一种数据类型来存储数据
-
字典
如果单纯的使用列表,会使有对应关系的数据操作非常麻烦
-
字典的定义
字典的定义方式和之前学的列表的定义方式类型类似,但是因为数据结构的不同,字典是以键值对的形式定义的 -
字典的增删改查
字典可以直接通过key来取值,但是如果key不存在则会报错
在代码中,常用get方法来取值,及时key不存在,也不会报错
setdefault方法也可以查找当key存在则返回values值,如果key不存在则添加键值对
update则可以更新key的值,如果不存在则添加键值对
其中的keys、pop、popitem、items、values是需要重点掌握的
其他的字典方法了解下即可 -
总结
1、字典的定义
掌握:字典的定义dict
2、查找
掌握:key取值方法,get方法
3、字典的修改
掌握:key值修改,setdefault、update方法
4、其他方法
了解:字典的其他方法了解即可
三、集合思考一:字典是键值对形式,那么如果没有value的话,会是怎样?
-
集合
集合每个值是唯一的,并且也是无序的
字典key也具有同样的特性 -
集合的运算
集合的交集:指的是两个集合中相同的元素,一个空集合用:set()表示
集合的并集:指的是两个集合不相同的元素合并在一起
集合的差集:指的是第一个集合减去第二个集合中相同的元素,剩下的集合一中的元素 -
集合的增删改查
集合也有增加、更新、移除等基本操作 -
集合的判断
集合也有一些判断操作,了解即可 -
总结
1、集合定义
掌握:集合也是使用大括号,但不是键值对形式,是单个元素形式
2、集合运算
掌握:集合的交,并,差运算
3、增删改查
掌握:add、update、pop、remover等方法
4、集合特性
掌握:集合内元素是无序且唯一的
四、运算符总结思考一:刚才给大家讲解了集合总得运算符,那Python中还有哪些运算符呢?
运算符 | 描述 |
---|---|
** | 幂运算 |
+、- | 一元运算符(正负号) |
*、/、% | 算术运算符(乘、除、取余) |
+、- | (加减) |
<、>、<=、>= | 比较运算符 |
== 、 != | |
=、%=、/=、-=、+=、*=、**= | 赋值运算符 |
is、is not | 身份运算符 |
in、not in | 成员运算符 |
not > and > or | 逻辑运算符 |
- 可变不可变总结
可变对象:list、dict、set
不可变对象:数值、str、元组
五、本节课总结
1、字符串方法
掌握:字符串find、replace、split方法
掌握:\n 、\t、r
2、字典
掌握:字典的定义,get、update方法
3、集合
掌握:集合定义、交、并、差运算
4、运算符总结
了解:常见运算符的运算顺序
六、上节作业参考代码
1、for循环99乘法表
'''for循环九九乘法表'''
for i in range(1,10):
for j in range(1,i+1):
print(f'{j}x{i}={i*j}',end='\t')#可以使用多种格式化方式这只是其中一种
j += 1
print()
i += 1
2、一个列表中有重复元素,编写程序,移除重复元素
列表:li = [1,1,1,2,2,3,3,3,3,3,3,4,4,5,6,5,6]
'''去重'''
li = [1,1,1,1,1,2,2,2,3,3,3,3,4,4,5,6,5,6]
for i in li.copy():
if li.count(i) > 1:
li.remove(i)
print(li)
或者
li = [1,1,1,1,1,2,2,2,3,3,3,3,4,4,5,6,5,6]
li1 = []
for i in li:
if i not in li1:
li1.append(i)
print(li)
print(li1)
七、作业
1、 找出两个列表中相同元素,并打印出来
2、统计一串字符中,每个字母 a~z的出现次数,忽略大小写
3、利用26个字母和10个数字,随机生成10个8位密码
4、判断用户输入的是不是一个手机号码,并且是不是以13开头的手机号
下期参考代码见!!!