数据结构
-
可变类型与不可变类型(重头戏)
基操:可变类型:[], {} # 可增删改 查 不可变类型: int float str () # 无法增删改,只可查 升操:+ 与 += 的区别:也许很多人会说 + 和 += 是完全等价的,或者知道区别,但也说不出个所以然 看我操作:(忽略 Python 小整数池的内存固定分配问题)+: 无论是可变类型 还是 不可变类型,都是新指向的空间 +=: 对于可变类型:原地操作,原指向,原空间 对于不可变类型:异地操作,新指向,新空间 我这里故意搞你一下思绪:见过 a=+1 么,可以运行试试。不要疑惑,告诉你答案:这个 +1 代表 正负号的 正 1。虽然一点技术含量没有,但是你要懂
-
序列
也许叫可迭代对象更为合适,但是我喜欢叫序列。我认知的序列包括 [], {}, () # 请记住这个序列,数据处理最为重要 此外说明一下:1. 我的代码大多都是 Ipython 运行完贴上去的,所以你看见的 out 格式就代表 print 了,要懂~ 2. 所写的大多都是实际经验中常用的 或者 冷门但是好用的 3. 列出的函数 API 有的嫌弃麻烦没有写参数,你要懂,(我这里没有顾及 0 入门的小白,谅解)
-
元祖
基操:元祖属于不可变类型,不能增删改,所以函数少的可怜 我用 help 查了一下,只有下面这 2 个函数。。。。。。a = (1,2,3) count() # 统计元素个数 index() # 查找元素,并返回位置 升操:a = (1) # 哥们注意,这不是元祖,这是 整形 1 ..... a = (1,) # 这才是元祖,单元素元祖需要加逗号,记住即可,不必纠结
-
常用字符串操作:
基操:a = '你 2 好' a.find('你') # 搜索目标字符串,找到 则 返回索引,找不到 则 返回 -1(推荐使用)a.split(2) # 注意:不给参数,默认按所有 空白符 切割 a.strip() 升操:1. string 库的灵活使用 In [1]: import string In [2]: string.digits Out[2]: '0123456789' In [8]: string.ascii_letters Out[8]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' In [9]: string.ascii_lowercase Out[9]: 'abcdefghijklmnopqrstuvwxyz' In [10]: string.ascii_uppercase Out[10]: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' In [12]: string.punctuation Out[12]: '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' 2. python3.6 - f 模板字符串 新语法引出来,只为刷三观,具体自己去学 学过 ES6 可能会很熟悉 -> 其实就是模板字符串 (ES6 和 python 语法真的很像) In [15]: name = '张三' In [16]: f'名字:{name}' Out[16]: '名字: 张三' 如果你想学习更多 f 原语,请参考这位老哥 -> https://blog.csdn.net/sunxb10/article/details/81036693
-
常用列表操作:
a = [4,3,2,1] 基操:a.extend() # 参数如果是序列,则把这个序列解开,一个一个插入 a.append() # 参数写什么, 插入的就是什么 升操:a[::] # 开辟空间 复制列表 a.sort(key=) # 记住这个 key, 可以写函数名(后面也会写高阶函数的文章)
-
常用字典操作:
基操:a = {1:2} a.update({key:value}) # 有则更新,无则添加 (Key-Value 算一个整体) a.setdefault(key, value) # 有此 Key 则不变 并返回 value,无则插入 key,value 并返回 None a.keys() # 返回所有 key(注意:返回值可以理解为 集合对象)a.values() # 返回所有 value ( 同上,返回值可理解为 集合对象) a.items() # 返回所有 键值对(同上,返回值可理解为 集合对象)升操:1. Key 是字典作为序列的默认首选项 解释对列表、元祖等序列等一系列操作如果应用在 字典上 就会只操作 Key 2. 双层序列 和 字典 转换:seq2dict: dict(((1,2),(3,4)) ) dict2seq: tuple({1:2,3:4}.items())
-
常用集合操作:
大前提:集合 = 无序 = 去重 基操:add | pop | remove | update 和 & | - ^ 升操:(集合的初始化方式的差异) In [57]: s1 = set('abcd') # 理解方式:此初始化方式 会先遍历 整个 字符串 In [58]: s1 Out[58]: {'a', 'b', 'c', 'd'} In [59]: s2 = {'abcd'} # 理解方式:此初始化方法把 整个 字符串当做集合的 一个 元素 In [60]: s2 Out[60]: {'abcd'}