![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
小tips
zxm^
这个作者很懒,什么都没留下…
展开
-
python 返回函数中的在一个内部函数里 对外部作用域(但不是全局作用域)的变量进行引用
例1:count = []for i in range(1, 4): def f(): return i * i count.append(f)f1, f2, f3 = countprint(f1, 'f1的运行结果为', f1())print(f2, 'f1的运行结果为', f2())print(f3, 'f1的运行结果为', f3())这里本意是f1,f2,f3分别对应i=1,2,3时的f函数,但是当调用函数显示的时候,i 已经是3,所以得到的结果是一原创 2021-05-31 17:44:55 · 423 阅读 · 0 评论 -
python sort函数 cmp、functools.cmp_to_key 详解
一、sort函数sort函数默认按从小到大的顺序排列————————————————sort()函数原型:list.sort(key=None, reverse=False)、(1) key参数key接受的是一个只有一个形参的函数,形式如下def f(a):return len(a)key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序list = ['aa', 'bbb', 'cccc', 'd']def compare(a): return len(a)原创 2021-05-31 02:48:04 · 4126 阅读 · 1 评论 -
python 类的__str__方法
转载自文章:str()方法当使用print输出对象的时候,只要类中自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据。例如:class Cat: """定义一个猫类""" def __init__(self, new_name, new_age): """在创建完对象之后 会自动调用, 它完成对象的初始化的功能""" # self.name = "汤姆" # self.age = 20转载 2021-04-08 21:54:58 · 1646 阅读 · 0 评论 -
Python列表与字典操作的时间复杂度
Python列表与字典操作的时间复杂度码住,以后看。原创 2021-03-26 21:26:26 · 195 阅读 · 0 评论 -
python 切片操作 超全汇总
一、切片方式:①切取单个元素:>>>a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>>a[0]>>>0>>>a[-4]>>>6当索引只有一个数时,表示切取某一个元素。②切取完整对象:切片操作基本表达式:object[start_index:end_index:step]step:正负数均可,其绝对值大小决定了切取数据时的‘‘步长”,而正负号决定了“切取方向”,正表示“从左原创 2021-03-26 21:14:01 · 662 阅读 · 0 评论 -
python 深拷贝与浅拷贝
一、常见的拷贝方式①直接赋值只传递对象的引用,原始列表改变,被赋值的b也会做相同的改变事实上,b和alist指向的是同一个列表。>>> b=alist>>> print b[1, 2, 3, ['a', 'b']]>>> alist.append(5)>>> print alist;print b[1, 2, 3, ['a', 'b'], 5][1, 2, 3, ['a', 'b'], 5]②浅拷贝:c=cop原创 2021-03-26 20:54:12 · 225 阅读 · 1 评论 -
python 切片操作
注意python切片操作,索引的是下标,如:a=[3,4]print(a[:0])输出[]a=[3,4,5]print(a[:3])输出[3, 4, 5]原创 2021-03-26 18:59:36 · 69 阅读 · 0 评论 -
面向对象和面向过程的区别
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。例如五子棋:面向过程的设计思路就是首先分析问题的步骤: 1、开始游戏, 2、黑子先走, 3、绘制画面, 4、判断输赢, 5、轮到白子, 6、绘制画面, 7、判断输赢, 8、返回步骤2, 9、输出最后结果。 把上面每个步骤用分别的函数来实现,问题就解决了。而面向对象的原创 2021-02-07 14:19:45 · 83 阅读 · 0 评论 -
返回值为函数
如果返回的只有函数名,那么被返回的函数不会被调用,如:def f(): print('1+1=2')def wrapper(fun): return funa = wrapper(f)这样不会调用f。若想调用f,需改为return fun(),上面例子可以改为:def f(): print('1+1=2') def wrapper(fun): return fun()wrapper(f)这样就会调用了,输出:1+1=2,这时wrapper(原创 2021-02-04 12:31:24 · 254 阅读 · 0 评论 -
python 大小写转换 lower() 和 upper() 函数 注意事项
以lower()函数为例,upper()同理str.lower(),把str字符串中所有大写字母变成小写并将改变后的字符串返回。需要注意:def normalize(name): name[0].upper() return name本意是想把name的首字母变成大写,但这样无法改变name正确写法:def normalize(name): return name[0].upper+name[1:]同理:def normalize(name): name原创 2021-02-02 13:15:23 · 3246 阅读 · 0 评论 -
求一个非负的十进制整数 所占的bit位数
求非负的十进制整数n所占的bit位数:设n占m个bit位,则20+21+⋯+2m−2<n≤20+21+⋯+2m−12^0+2^1+\dots+2^{m-2}<n\leq2^0+2^1+\dots+2^{m-1}20+21+⋯+2m−2<n≤20+21+⋯+2m−1即2m−1−1<n≤2m−12^{m-1}-1<n\leq2^m-12m−1−1<n≤2m−1所以,n所占的bit位应为m=floor(log(n+1))m=floor(\log\left(n+1\原创 2021-02-01 18:10:39 · 262 阅读 · 0 评论