给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
网络安全面试题
绿盟护网行动
还有大家最喜欢的黑客技术
网络安全源码合集+工具包
所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
1.利用空格拆分每个单词,每个单词反转,再使用空格拼接成字符串
2.利用空格拆分每个单词,反转单词列表,使用空格拼接为字符串,反转字符串
3.反转字符串,将字符串用空格分割成单词列表,反转单词列表,单词列表用空格分隔转为字符串
简介
和字符串一样,列表也是序列式数据类型,并且可变,可以通过下标或切片操作来访问一个或多个连续元素。但是,列表更方便,而且,可以存储不同的数据类型的对象。
创建与赋值
使用[]创建,赋值操作符=进行赋值。
l = [1,2.2,‘lady_killer’,[4,5],True]
l
[1, 2.2, ‘lady_killer’, [4, 5], True]
带着[],是不是感觉很烦呀,你可以这样:
print(*l)
1 2.2 lady_killer [4, 5] True
print(l)和print(*l)为什么会不一样?这就要提到函数了,可以看:Python-函数基础总结与内置函数
索引
正索引 | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
内容 | 1 | 2.2 | ‘lady_killer’ | [4,5] | True |
负索引 | -5 | -4 | -3 | -2 | -1 |
操作符
访问与更新(序列操作符切片)
与上一篇文章重复的单个元素访问、获取连续元素、反转等不再赘述。
更新使用赋值操作符即可。
l[0]=10
l
[10, 2.2, ‘lady_killer’, [4, 5], True]
判断元素是否存在(成员关系操作in,not in)
2.2 in l
True
3.3 in l
False
拼接列表(连接操作符+)
只能是列表和列表拼接,不能和其他类型拼接。
l+s
[10,2.2, ‘lady_killer’, [4, 5], True, 6, 8]
重复(重复操作符*)
l = [‘-’]
l*10
[‘-’, ‘-’, ‘-’, ‘-’, ‘-’, ‘-’, ‘-’, ‘-’, ‘-’, ‘-’]
删除
确定位置时,使用切片及关键字del
del l[0]
l
[]l = [1,2,3]
del l[1:]
l
[1]
删除整个列表,del 列表名,一般不需要程序员去删除。
方法
添加
append(x),将 x 添加到序列的末尾 (等同于 s[len(s):len(s)] = [x]
)。
l = [1,2]
l.append(3)
l
[1, 2, 3]
insert(i, x),
在由 i 给出的索引位置将 x 插入 l (等同于**l[i:i] = [x]
**),i及后序元素后移。
l.insert(2,4)
l
[1, 2, 4, 3]l[3:3] = [5,6]
l
[1, 2, 4, 5, 6, 3]
extend(t),
用序列 t 的内容扩展 s。
l = [1,2,4,3]
s = (5,6,7)l.extend(s)
l
[1, 2, 4, 3, 5, 6, 7]
删除
pop([i]),
提取在 i 位置上的项,并将其从列表中移除。默认为最后一个元素。
s = l.pop()
s
3
remove(x),
删除第一个等于 x 的元素,没有时ValueError。不确定是否存在时,先使用in进行检查。
l = [1,3,5,3,6]
l.remove(3)
l
[1, 5, 3, 6]l.remove(4)
Traceback (most recent call last):
File “”, line 1, in
ValueError: list.remove(x): x not in list
clear(),
从 s 中移除所有项 (等同于 del s[:]
)
>>> l.clear()
l
[]
浅拷贝
copy,创建 s 的浅拷贝 (等同于 s[:]
)
s = l.copy()
s
[1, 3, 5, 3, 6]
l
[1, 3, 5, 3, 6]
m = s
m
[1, 3, 5, 3, 6]id(l);id(s);id(m)
1806267157640
1806267194824
1806267194824
浅拷贝会新开辟内存,复制相同内容,赋值则是取个别名,故m、s指向同一个内存地址。
统计
count(x),
x 在 s 中出现的总次数
l = [1,2,‘2’,6,9.4,4,2]
l.count(2)
2
查找
index(x[, i[, j]]),
x 首次出现项的索引号(范围[i,j)),没有找到时ValueError。不确定是否存在时,先使用in进行检查。
l.index(2)
1
l.index(7)
Traceback (most recent call last):
File “”, line 1, in
ValueError: 7 is not in list
逆序
reverse(),将列表中的元素逆序,就地反转,没有返回值。
l.reverse()
l
[2, 4, 9.4, 6, ‘2’, 2, 1]
l[::-1]
[1, 2, ‘2’, 6, 9.4, 4, 2]
l
[2, 4, 9.4, 6, ‘2’, 2, 1]
若需要列表本身反转,就用reverse(),如果要列表本身不变,得到反转后的,就用[::-1]。
排序
sort(*, key=None, reverse=False),此方法会对列表进行原地排序,只使用 <
来进行各项间比较。 异常不会被屏蔽 —— 如果有任何比较操作失败,整个排序操作将失败(而列表可能会处于被部分修改的状态)
key 指定带有一个参数的函数,用于从每个列表元素中提取比较键,(例如 key=str.lower
)。默认值 None
表示直接对列表项排序而不计算一个单独的键值。
reverse 为一个布尔值。 如果设为 True
,则每个列表元素将按反向顺序比较进行排序。
l = [1,4,2,5,3]
l.sort()
l
[1, 2, 3, 4, 5]
l = [1,5,3,‘a’,4]
l.sort()
Traceback (most recent call last):
File “”, line 1, in
TypeError: ‘<’ not supported between instances of ‘str’ and ‘int’
l
[1, 3, 5, ‘a’, 4]
l = [‘ANDY’,‘andy’,‘lady’,‘Lady’,‘killer’]
l.sort(key=str.lower)
l
[‘ANDY’, ‘andy’, ‘killer’, ‘lady’, ‘Lady’]
l.sort(key=str.upper,reverse=True)
l
[‘lady’, ‘Lady’, ‘killer’, ‘ANDY’, ‘andy’]
第二个例子,str和in不能比较,但是列表修改了部分
最后一个例子,[‘ANDY’, ‘andy’, ‘killer’, ‘lady’, ‘Lady’]降序排列保证了排序稳定性。
student = [(‘frank’,100),(‘yu’,89),(‘lady’,80),(‘killer’,99)]
student.sort(key=lambda stu:stu[1])
student
[(‘lady’, 80), (‘yu’, 89), (‘killer’, 99), (‘frank’, 100)]
对于这种有结构的数据,使用key也不错。
多字段排序
student = [(‘frank’,100),(‘yu’,89),(‘lady’,80),(‘killer’,99),(‘yubo’,89)]
student.sort(key = lambda s:(s[1],s[0]))
student
[(‘lady’, 80), (‘yu’, 89), (‘yubo’, 89), (‘killer’, 99), (‘frank’, 100)]
如果相同,就按另一个字段排序
相关内置函数
列表长度
len()
l = [1,2,‘3’,[3,4]]
len(l)
4
不确定元素个数,又想使用索引访问时可先使用len判断。
排序与反转
sorted(iterable, *, key=None, reverse=False),与自带的方法sort不同,会返回一个新的已排序列表。不再展示,和sort用法一样。
reversed(seq)
返回一个反向的 iterator。 seq 必须是一个具有 __reversed__()
方法的对象或者是支持该序列协议(具有从 0
开始的整数类型参数的 __len__()
方法和 __getitem__()
方法)。
r = [s for s in reversed(l)]
r
[[3, 4], ‘3’, 2, 1]
个人很少用,返回的是迭代器,不是反转后的列表。
求和
sum
(iterable, /, start=0)
一、网安学习成长路线图
网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、网安视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
三、精品网安学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、网络安全源码合集+工具包
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、网络安全面试题
最后就是大家最关心的网络安全面试题板块
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!