47 print(s.isprintable()) #判断是否可以被打印,linux的驱动不能被打印
48
49 print(s.isspace()) #判断是否是一个空格
50
51 print(s.istitle()) #判断是否是一个标题 每个字符串的首字母大写 Hello Worlld
52
53 print(s.isupper()) #判断是否都是大写
54
55 #s.join()
56 name = [“a”,“b”,“1”,“2”]57 name2 = “”.join(name) #列表转成字符串,把列表里边的元素都join到字符串中
58 print(name2) #得出ab12
59
60 #s.ljust
61 s = “Hello World”
62 print(s.ljust(50,“-”)) #给字符串从左往右设置长度为50,字符串长度不够用 - 补充
63
64 print(s.lower()) #字符串都变成小写
65
66 print(s.upper()) #变大写
67
68 print(s.strip()) #脱掉括号里边的,可以是空格 换行 tab …
69
70 s.lstrip() #只脱掉左边的空格
71 s.rstrip() #只拖点右边的空格
72
73 #s.maketrans() #
74 str_in = “abcdef” #必须是一一对应
75 str_out = “!@#$%^” #必须是一一对应
76 tt = str.maketrans(str_in,str_out) #生成对应表,就像密码表一样
77 print(tt)78 #结果:{97: 33, 98: 64, 99: 35, 100: 36, 101: 37, 102: 94}
79
80 print(s.translate(tt)) #s.translate方法调用 加密方法tt 给 s的字符串加密
81 #结果:H%llo Worl$
82
83 #s.partition()
84 s = “Hello World”
85 print(s.partition(“o”)) #把字符串用 从左到右第一个o把 字符串分成两半
86 #结果:(‘Hell’, ‘o’, ’ World’)
87
88 s.replace(“原字符”,“新字符”,2) #字符串替换,也可以写换几次 默认全换,可以设置count次数
89
90 s.rfind(“o”) #查找最右边的字符,也有开始和结束
91
92 print(s.rindex(“o”) ) #查找最右边的字符的索引值
93
94 s.rpartition(“o”) #从最右边的字符开始 把字符串分成两半
95
96 s.split() #已括号里边的把字符串分成列表,括号里可以是空格、等字符来分成列表
97
98 s.rsplit() #从最右边以 某字符 来分开字符串
99
100 s.splitlines() #设置以换行的形式 把字符串分成列表
101
102 print(s.swapcase()) #字母换成相反的大小写,大的变成小,小的变成大
103 #结果“:hELLO wORLD
104 #原来的“hello World”
105
106 s.title() #把字符串变成title格式 Hello World
107
108 s.zfill(40) #把字符串变成40,字符串不够,从左往右用0 补齐
109
110
111 #“a\tb” 字符串中间的\t 被认为是tab 是4个或者8个空格
112 #整体意思是:a 有一个tab 然后 又有一个b
View Code
列表
列表的常用方法:创建、查询、切片、增加、修改、删除、循环、排序、反转、拼接、clear、copy
列表的特点:可以重复;列表是有序的
ContractedBlock.gif
ExpandedBlockStart.gif
1 1、创建2 方法一:list1 = [“a”, “b”] #常用
3 方法二:list2 = list () #一般不用这种方法
4
5 2、查询6 列表的索引 (也称下标):7 列表从左到右下标是从0开始0、1、2、3…8 列表从右到左下标是从 - 1开始 -1 -2 -3…9
10 查询索引值:11 list1.index (a) #index查询找到第一个a程序就不走了,
12 list1[0] #通过a的索引 得出a
13 list1[-1] #通过b的下标 得出b
14
15 当list1 = [1, 2, 3, 4, 4, 4, 4, 4, 4]16 列表里出现元素相同时,统计相同次数17 list1.count (4) #统计得出:6 代表列表有6个4
18
19 3、切片20 切片:通过索引 (或下标)21 截取列表中一段数据出来。22 list1 = [1, 2, 3, 4, 4, 4, 4, 4, 4]23 list1[0:2] #得出 [1,2] ,列表切片顾头不顾尾,也可成list1[:2]
24 list1[-5:] #得出[4,4,4,4,4],取最后5个元素,只能从左往右取
25 按步长取元素:26 list1 = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5]27 list1[:6:2] #得出:[1, 3, 5] :2 代表步长 ,每隔两步取一个元素
28 list1[::2] #得出:[1, 3, 5, 1, 3, 5] 在列表所有元素中,每隔2步取一个数
29
30 4、增加31 list1 = [“a”, “b”, “c”]32 list1.append (“d”) #追加d到列表list1的最后 结果:[‘a’, ‘b’, ‘c’, ‘d’]
33 list1.insert (1, “aa”) #插入aa到列表下标为1的之前 得出结果:[‘a’, ‘aa’, ‘b’, ‘c’, ‘d’]
34
35 5、修改36 list1[1] = “bb” #直接给对应位置赋值,即是修改 结果:[‘a’, ‘bb’, ‘b’, ‘c’, ‘d’]
37 批量修改38 把[‘a’, ‘bb’, ‘b’, ‘c’, ‘d’]里的前两个元素替换掉39 list1[0:2] = “boy” #结果:[‘b’, ‘o’, ‘y’, ‘b’, ‘c’, ‘d’]
40
41 6、删除42 list1 = [‘b’, ‘o’, ‘y’, ‘b’, ‘c’, ‘d’]43 list1.pop () #默认删除最后一个元素 d
44 list1.remove (“o”) #删除元素O remove只能一个一个删除
45 list1.remove (0) #删除下标为0的元素 b
46 del list1[0] #删除下标为0的元素 del是一个全局删的方法
47 del list1[0:2] #del可以批量删除
48
49 7、for循环列表50 list1 = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5]51 for i in list1: #使用for循环循环列表list1里边的元素
52 range (10) #生成0到10 的数字
53
54 8、排序55 list1 = [“1”, “5”, “3”, “a”, “b”, “f”, “c”, “d”, “A”, “C”, “B”]56 list1.sort () #结果:[‘1’, ‘3’, ‘5’, ‘A’, ‘B’, ‘C’, ‘a’, ‘b’, ‘c’, ‘d’, ‘f’]
57
58 排序是按照ASCII码对应排序。59 反转60 list1.reverse () #结果:[‘f’, ‘d’, ‘c’, ‘b’, ‘a’, ‘C’, ‘B’, ‘A’, ‘5’, ‘3’, ‘1’]
61
62 9、两个列表拼一块63 #方法一
64 list1 = [1, 2, 3, 4, 5]65 list2 = [6, 7, 8, 9]66 list1 + list2 #结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
67 #方法二
68 list1.extend (list2) #把列表2扩展到list1中
69 结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]70
71 10、clear72 #清空列表
73 list2.clear () #清空list2
74
75 11、copy76 浅copy77 复制列表78 list2 =list1.copy ()79 当列表只有一层数据,没有列表嵌套列表的情况下,复制后的列表和原来的列表是完全独立的。80 当列表有多层嵌套的时候,列表嵌套里边的列表的内容是和原有列表是共享的。81 list1.copy () #所以这个叫做:浅copy
82
83 深copy:需要借助python模块84 importcopy85 list2 =copy.deepcopy (list1)86 深copy后,新的列表和旧的列表,不管有没有列表嵌套列表,都是完全独立的个体。87 可以通过查看列表名对应的内存地址分辨两个列表是否独立88 查看python解释器里边的内存地址:id (变量名)
View Code
元组
特点:有序的,不可变的列表
常用功能:index,count,切片
使用场景:显示的告知别人,此处数据不可修改;数据库连接配置信息等
hash函数
hash,一般翻译为“散列”,也有直接翻译为“哈希”的,就是把任意长度的输入,通过散列算法,变成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不通的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值,简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
特征:hash值的计算过程是依据这个值的一些特征计算的,这就要求被hash的值必须固定,因此被hash的值必须是不可变的。(不能保证输出的数据唯一的,容易造成冲突)
用途:文件签名;md5加密;密码验证
ContractedBlock.gif
ExpandedBlockStart.gif
1 >>> hash(“abc”)2 -6784760005049606976
3 >>> hash((1,2,3))4 2528502973977326415
View Code
字典
语法:info={}
特点:1.key-value结构,key必须是可hash、必须是不可变数据类型、必须唯一
2.每一个key必须对应一个value值,value可以存放任意多个值,可修改,可以不唯一
3.字典是无序的
字典的查找速度快是因为字典可以把每个key通过hash变成一个数字(数字是按照ASCII码表进行排序的)
字典的方法:增删改查 多级嵌套 等
ContractedBlock.gif
ExpandedBlockStart.gif
1 #字典方法
2 info ={3 “student01”:“aaa”,4 “student02”:“bbb”,5 “student03”:“ccc”
6 }7
8 #增加
9 info[“student04”] = “ddd”
10 info[“student05”] = “eee”
11 info[“student06”] = “fff”
12
13 #查询
14 #判断student01在不在info字典里
15 print(“student01” in info ) #返回True
16 print(info.get(“student01”)) #返回aaa,没有返回None
17 info[“student01”] #获取对应的value ,如果没有这个key 就报错,所以一般用get
18
19 #删除
20 print(info.pop(“student01”)) #删除key
21 print(info.popitem()) #随机删除一个key
22 del info[“student02”] #删除的key ,如果没有删除的key 就报错 KeyError: ‘student01’
23
24 info.clear() #清空字典
25
26 #多级字典嵌套
27 dic1 = {“aaa”: {“aa”: 11}, “bbb”: {“bb”: 22}}28
29 #其他方法
30 info ={31 “name1”: [22, “it”],32 “name2”: [24, “hr”],33 “name3”: 33
34 }35
36 info2 ={37 “name1”: 44,38 “name4”: 33,39 1: 2
40 }41 info.keys() #打印所有的key
42 info.values() #打印所有的value
43 info.items() #把字典转成一个列表
44 info.update(info2) #把两个字典合成一个,如果有重复的key ,info2里边的重复key会覆盖info里边的key
45 info.setdefault(“student07”,“abcdef”) #设置一个默认的key:value ,
46 #如果info字典里没有key student07 ,那么info字典里有添加 student07:abcdef
47 #如果info字典里已经手动添加了student07的key value,那么这里的student07:abcdef 就不起作用
48 print(info.fromkeys([“name1”,“name2”],“aaa”) ) #从一个可迭代的对象中批量生成key和相同的value
49
50 #字典的循环:高效循环
51 for k ininfo:52 print(k,info[k]) #打印key value
53
54 #另外一种方法 低效
55 for k,v in info.items(): #先把字典转成列表,在循环,所以低效
56 print(k,v)
View Code
集合
集合是一个无序的、不重复的数据组合
作用:1.去重
2.关系测试,测试两组数据之间的交集、差集、并集等关系
语法:
s = {} #如果为空,就是字典
s = {1,2,3,4} #就成了集合 set
s = {1,2,3,4,1,2} #有重复数据,显示结果就直接去重{1, 2, 3, 4}
列表转成给一个字典
l = [1,2,3,4,1,2]
l2 = set(l)
集合的方法
ContractedBlock.gif
ExpandedBlockStart.gif
1 #集合方法
2 s = {1,2,3,4,5} #定义一个集合
3
4 #增加
5 s.add(6)6 print(s) #{1, 2, 3, 4, 5, 6}
7
8 #删除
9 #随机删除
10 s.pop()11 print(s) #{2, 3, 4, 5, 6}
12 #指定删除,如果不存在,就报错
13 s.remove(6)14 print(s) #{2, 3, 4, 5}
15 #指定删除,如果不存在,不报错
16 s.discard(6)17 print(s)18
19 #联合其他集合,可以添加多个值
20 s.update([7,8,9])21 print(s) #{2, 3, 4, 5, 7, 8, 9}
22
23 #清空集合
24 s.clear()25
26
27 #集合的关系测试
28 iphone7 = {“alex”,“rain”,“jack”,“old_driver”}29 iphone8 = {“alex”,“shanshan”,“jack”,“old_boy”}30
31 #交集
32 print(iphone7.intersection(iphone8))33 print(iphone7 &iphone8)34 #输出:
35 {‘jack’, ‘alex’}36 {‘jack’, ‘alex’}37
38 #差集
39 print(iphone7.difference(iphone8))40 print(iphone7 -iphone8)41 #输出:
42 {‘rain’, ‘old_driver’}43 {‘rain’, ‘old_driver’}44
45 #并集 把两个列表加起来
46 print(iphone7.union(iphone8))47 print(iphone7 |iphone8)48 #输出:
49 {‘rain’, ‘jack’, ‘old_driver’, ‘alex’, ‘shanshan’, ‘old_boy’}50 {‘rain’, ‘jack’, ‘old_driver’, ‘alex’, ‘shanshan’, ‘old_boy’}51
52 #对称差集 把不交集的取出来
53 print(iphone7.symmetric_difference(iphone8))54 #输出:
55 {‘rain’, ‘old_driver’, ‘shanshan’, ‘old_boy’}56
57 s = {1,2,3,4}58 s2 = {1,2,3,4,5,6,}59 #超集 谁是谁的父集
60 print(s2.issuperset(s)) #s2是s的父集
61 print(s2 >=s)62 #输出:
63 True64 True65
66 #子集
67 print(s.issubset(s2)) #s是s2的子集
68 print(s <=s2)69 #输出:
70 True71 True72
73 #判断两个集合是否不相交
74 print(s.isdisjoint(s2))75 #输出:
76 False #代表两个集合是相交的
77
78 s = {1,2,3,-1,-2}79 s2 = {1,2,3,4,5,6}80 s.difference_update(s2) #求出s和s2 的差集,并把差集 覆盖给 s
81 print(s) #结果:{-2, -1}
82
83 s.intersection_update(s2) #求出s和s2的交集,并把交集 覆盖给 s
84 print(s)85 print(s2)86 #结果:
87 {1, 2, 3}88 {1, 2, 3, 4, 5, 6}
View Code
字符编码
python3
文件编码默认 :utf-8
字符串编码:unicode
python2
文件编码默认:ascii
字符串编码默认:ascii
如果文件头声明了utf-8,那字符串的编码是utf-8
unicode是一个单独的类型
python3的内存里:全部是unicode
python3执行代码的过程:
1、解释器找到代码文件,把代码字符串按文件头定义的编码加载到内存,转成unicode
2、把代码字符串按照python语法规则进行解释
3、所有的变量字符都会以unicode编码声明
在python2里边,默认编码是ASCII编码,那么文件头声明是utf-8的代码,在windows中将显示乱码
如何在windows上显示正常呢?(windows的默认编码是gbk)
1、字符串以gbk格式显示
2、字符串以unicode编码
修改方法:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。
别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。
我先来介绍一下这些东西怎么用,文末抱走。
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
(4)200多本电子书
这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。
基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。
(5)Python知识点汇总
知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。
(6)其他资料
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。
这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
(4)200多本电子书
这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。
基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。
(5)Python知识点汇总
知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。
(6)其他资料
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。
这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-7DEKgvSE-1712576795476)]