1、“/”为浮点数除,“//”为整数除。
2、字典
设置默认值:
方法1:
1 dic = {} 2 dic['A'] = dic.get('A', 0) + 1
当字典不包含键‘A’时,get函数返回默认值0.
方法2:
1 dic = {} 2 dic.setdefault('A', 0) 3 dic['A'] += 1
当字典不包含键A时,setdefault函数将键A的值设为0;否则键A的值不变。
3、C++中的 ? : 实现方法:
1 prev.next = l1 if l1 is not None else l2
4、is 和 == 区别:
is判断是否是同一个对象,==判断值是否相等。
当a 和 b赋予相同的值时,若值的类型为数值型或字符串型时,a is b 为 True,其它类型如list,set等为False。
参考:https://www.cnblogs.com/wangkun122/p/9082088.html
5、id(X):X的内存地址
6、生成器只能读取(迭代)一次:
1 x = (x*x for x in range(3))
x为生成器。
1 for i in x: 2 print(i)
上述代码若运行两次,第一次有输出,第二次无输出。
7、关键字 yield 返回生成器。
8、查找某元素a 是否在某集合或列表b中:
a in b
集合查找速度更快。
9、tqdm:
对迭代器显示进度条。
10、列表list前加 星号 “*”:
将list中的元素拆成独立的元素传入函数。
11、'{}sth{}'.format(a, b)
12、列表":"的使用:
a[b:c:d],b为开始下标,c为结束下标加一,d为步长。
如:a[1:4:2],a[::-1]为a的倒序(负号表示倒序)。注意a[1:4:-1]是不对的,因为1到4只能正序。
13、getattr与setattr:
使用方法分别为:getattr(对象, 'attr')和setattr(对象,'attr',new_value)。
attr为对象所属的类的一个属性,注意要用字符串形式,例如:
14、元组tuple的相加:
+操作将两个元组拼接,例如:
15、计算程序运行时间
1 import time 2 time1 = time.time() 3 func() 4 time2 = time.time() 5 print('time used:{} seconds'.format(time2 - time1))
这样可以计算以秒为单位的运行时间。
16、引用同级目录下的一个函数的对象
例如同级目录下有一个resnet.py函数,里面有ResNet类,有resnet50函数,
可以写:
1 from .resnet import ResNet 2 from .resnet import resnet50
注意那个“.”。
17、argparse:
action='store_true':
表示加了这个选项则该属性为TRUE,例如:
1 parser.add_argument('--test_only', action='store_true', 2 help='set this option to test the model')
那么当加上 --test_only 选项时,test_only属性就为TRUE。
18、类似的变量赋值可写在同一行:
例如:
1 x, y = 3, 4 2 h, w = img.shape[0:2]
19、字符串子串查找:
直接用 a in b 或者 a not in b 就可以。
20、定义只包含一个元素的元组
注意加逗号!!