Python学习之二

    xiaoxiao2021-03-25  94

    1.range

    range(1,10)—>产生1到10的数,不包括10range(1,10,2)—>产生1到10的数间隔为2,不包括10range(10)—>产生0到10的数,不包括10 2.List eg.arr=[2,3,9,1,4,7,6,8]arr[0:]—>输出2, 3, 9, 1, 4, 7, 6, 8arr[0:-1]—>输出2, 3, 9, 1, 4, 7, 6arr[3:-2]—>输出1, 4, 7arr[3::2]—>输出1, 7, 8arr[::2]—>输出2, 9, 4, 6arr[3::]—>输出1, 4, 7, 6, 8arr[3::-1]—>输出1, 3arr[-1]—>输出8arr[::-1]—>输出8, 6, 7, 4, 1, 9, 3, 2 3.numpy.array:数组的下标从0开始数组中的元素类型必须相同 4.argsort:对array进行排序,输出从小到大的index; 5.dict.get(key,default):得到key的值若不存在key则返回default 6.sorted(data, cmp=None, key=None, reverse=False) 为内置函数,返回排序后的副本,sort()为list的函数,返回排序后的list。a=[3,1,2,4] print sorted(a) print a output:[1, 2, 3, 4] [3, 1, 2, 4]a=[3,1,2,4] print a.sort() print a output:None [1, 2, 3, 4] 两个函数除了一个以list或iterator为参数,另一个以list调用,其他的参数都一致。 reverse=True表示以从大到小的顺序排列,默认为False以从小到大顺序排列。a=[3,1,2,4] print sorted(a,reverse=True) print sorted(a,reverse=False) output:[4, 3, 2, 1] [1, 2, 3, 4] key表示用来作比较的值,常用于自定义类型 class Interval: def __init__(self,s,e): self.start=s self.end=e list=[] for i in range(10,7,-1): for j in range(11,i,-1): list.append(Iterval(i,j)) list2=sorted(list,key=lambda x:x.start) for x in list: print ('list [%d,%d]'%(x.start,x.end)) for y in list2: print('list2 [%d,%d]'%(y.start,y.end)) 倘若没有key则排序后的输出随机变化。 假如我们想当start相等时比较end, list2=sorted(list,key=lambda x:(x.start,x.end)) 我们用元祖(interval.start,interval.end)作为key比较,而元祖有默认的cmp函数。 cmp参数我们通过自定义函数或者使用lambda作为参数传给cmp。 def cmpInterval(a,b): if a.start!=b.start: return cmp(a.start,b.start) return cmp(a.end,b.end) list1=sorted(list,cmp=cmpInterval) for x in list1: print('list [%d,%d]'%(x.start,x.end)) list2=sorted(list,cmp=lambda x,y:cmp(x.start,y.start)) for y in list2: print('list2 [%d,%d]'%(y.start,y.end)) 尽量使用key而不是cmp来提高运算速度。
    转载请注明原文地址: https://ju.6miu.com/read-34566.html

    最新回复(0)