👉引言💎
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。 热爱写作,愿意让自己成为更好的人............
铭记于心 | ||
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉 |
一、基础常识类
1 关于map 与 lambda表达式
- map(函数,可迭代对象(列表等)),返回map对象,可用list转换成列表,可用for in便遍历
- 当使用map时只是封装了一个map对象,此时并没有进行运算,需要list( )转换时才会运算
函数体或者lambda表达式中 创建局部变量与 全局变量重名,则函数体内会以新创建的 局部变量为准
- Lambda表达式还可以结合自定义函数使用(除了与map外)
def con(args): x1min,x1max,x2min,x2max,x3min,x3max = args cons = ({'type':'ineq','fun':lambda x : x[0] - x1min},\ {'type':'ineq','fun':lambda x:-x[0] + x1max},\ {'type':'ineq','fun':lambda x:x[1] - x2min},\ {'type':'ineq','fun':lambda x:-x[1] + x2max},\ {'type':'ineq','fun':lambda x:x[2] - x3min},\ {'type':'ineq','fun':lambda x:-x[2] + x3max}) return cons
2 全局变量 global
t=1 global tt=1 此时 t与tt都是全局变量 但是 def test(): t=2 global tt=2 此时t为局部变量,tt则是全局 下面 print(t)错 print(tt)正确 函数体内使用全局变量的方法是 index =0 def t(): global index index+=1
- 海象运算符的优先级是低于关系运算符的
- 小数精确运算模块decimal
import decimal print(decimal.Decimal('111.111')+decimal.Decimal('222.222')) 333.333
- 类型转换: int( ),str( )等
- if else的几种写法
msg = "大于" if a > b else "小于" print('大于') if a > b else print("小于") msg = ("a小于b", "a大于b")[a > b] msg = {2: '=2', 1: '=1', 3: '=3'}[b - a]
二、bug与问题细节类
- 如果出现莫名其妙的问题,可以关闭python环境重新打开,比如上次 Pillow的grab 截图时出现 什么XCB不支持,结果重开pycharm就好了
- 对于非列表与字典,numpy库等,copy后更改不会影响到原副本,但是对列表等可迭代对象却只是浅拷贝(一维表的时候复制的是值,不会对原表造成影响,但如果是二维表,则会拷贝其中一维表的内存地址,这时候如果对其中的值操作会使原表受到影响),深拷贝只能用deepcopy(需导入copy模块)
- 类中调用类的方法一定要加self,并且向方法传递实参的时候无需传self
- python中可用r'\\'解决 编程语言中字符串使用 正则表达式 需要用\\\\表示 \的问题
- re findall方法会 返回匹配到的所有字符串,如果正则表达式里有 捕获,那么只返回匹配到的字符串的 捕获的组
- 单独赋给一个字符串时r这些标志符才生效
三、技巧类
- 循环体中不需要使用自定义变量的话,可用_代替
- python中else if 为elif;对不可变类型重新赋值,会指向一片新的空间,原空间会被抛弃(权限被系统收回)
- for 变量 in 可迭代对象(字符串或序列) 即以循环方式将可迭代对象中的元素依次取出
- print()自动换行,但是可以在()里语句后加入end =' ' 即为用空格代替换行,='\t'即为用\t 代替
- decode方法是将字节数组 解码为字符串,然后encode是将字符串 编码成字节数组
- Natsort自然排序模块
- x = eval(input('input x: ')) eval()将输入作为表达式运算
- set()去重,Counter 对字符串(列表)进行计数追踪,
- a, b = map(int, input().strip().split())
- del关键字 删除的是 变量本身,而不是其引用的数据,也就是 使用del a,再引用a则会报错
- 内置函数 enumerate(list) 可取下标 len()计算长度
- import 的包没有用到 会呈现灰色,但是也是已经导入了的,只是没用到而已(所以最好优化导入,避免产生包冲突)
- type() 返回数据结构类型(list、dict、numpy.ndarray 等)
- dtype 返回数据元素的数据类型(int、float等)
- astype() 改变np.array中所有数据元素的数据类型]
- print(line, end='\r')打印一行消失一行
- 字典对值排序:sorted(dic.items(),key=lambda x: x[1]),逆向的话 如果是数值 可以 -x[1/0]
如果有多个值,取其中几个降级排序,则可以用 operator.itrmgetter (整数序列,表示要取得下标) 获得
🌹写在最后💖: 路漫漫其修远兮,吾将上下而求索!伙伴们,再见!🌹🌹🌹