python常用

python2和python3的区别:

python2.7字典按key排序,python3.7字典按插入顺序:

d = {1:'a', 5:'e'}
d[2] = 'b'          #python3 {1:'a', 5:'e', 2:'b'}; python2 {1:'a', 2:'b', 5:'e'}
copy和deepcopy的区别:

参考这里,简单数据结构(list、dict等)无区别,都是复制一份指向该地址,复杂(有嵌套的list)数据结构要用deepcopy().

引申一下,is和==的区别,python里面is判断两个变量名是否指向同一个地址,==判断两个变量内容是否相同

import copy

a = {1:'a', 2:[1,2,3]}
b = a
c = a.copy()
d = copy.deepcopy(a)

b is a             # True
c is a             # False
d is a             # False

c[2] is a[2]       # True
d[2] is a[2]       # False
d[2] == a[2]       # True
axis指的是轴向,参考这里这里

比如本来x的shape为(2,3,4),np.sum(x,axis=0)结果就是一个shape=(3,4)的阵列,np.sum(x,axis=1)结果就是一个shape=(2,4)的阵列。

python参数的传递:默认参数、可变参数、关键字参数:

参考这里,可变参数前面1个*;关键字参数前面2个*

classmethod修饰符:

参考这里,使用时不需要再实例化该类

Import失败问题:

从github拉一段代码作为自己程序的一部分,单独跑都是好的,在主程序里调用就一直报No module named 'xxx'的错误,主要是import路径问题

from proto import tensor_pb2     #git代码
from lmdbdata.proto import tensor_pb2     #放到自己工程里新建了目录叫lmdbdata
格式化输出:
sys.stdout.write('.')        #这一句换成print '.',也是可以的。print后边加逗号就可以实现输出不换行
sys.stdout.flush()           #不管用sys.stdout还是print,这一行都很有必要。不加会隔很久显示一次 

 打印大数组时不省略:

import numpy as np
np.set_printoptions(threshold = 1e6)
 字典:
for key in sorted(distriDictO, reverse = true)  #倒叙遍历字典
numpy:
for multi in np.arange(1.0, 5.3, 0.1):    #按小数增长

提特征时发现一个有意思的现象可以用list.append(array)的方法保存一个array的列表,然后用np.array(list)将列表转为(len(list), array.shape)大小的array,但是添加到列表的array维度必须一致,一旦不一致np.array()转换出来的就不是一个期待的array。

可以用np.NaN表示不是一个数字,但类型是浮点的

list=[1,2,3,4,5,6,7,8]
l = np.array(list)
#l[2]=np.NaN   #会报错,因为l是整形类型, ValueError: cannot convert float NaN to integer
lf = l.astype(np.float32)
lf[5] = np.NaN
np.where(lf>5) #输出(array([5,7]),)

最大值可用float('inf')表示:

 float('inf') > 1    #返回True
-float('inf') > 1    #返回False

 

 isinstance(n, nn.Conv2d)

更高明的链表操作:

a = [i for i in xrange(10)]          #a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
aa = [i for i in xrange(10) if i%2]      #aa=[1, 3, 5, 7, 9]

list、string等的for循环迭代生成:

print [aa for aa in addlist if not aa == 'null']    #这是对的,输出一个列表
print aa for aa in addlist if not aa == 'null'       #这是错的,因为不是可迭代对象

 计时函数:

import time
start = time.time() #以秒为单位的浮点数,123.456789
xxx
end  = time.time()
print("time used: %.3f ms"((end-start)*1000)

 

posted @ 2018-07-08 10:54  tszs_song  阅读(232)  评论(0编辑  收藏  举报