1.range
- range(1,10)—>产生1到10的数,不包括10
- range(1,10,2)—>产生1到10的数间隔为2,不包括10
- range(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, 8
- arr[0:-1]—>输出2, 3, 9, 1, 4, 7, 6
- arr[3:-2]—>输出1, 4, 7
- arr[3::2]—>输出1, 7, 8
- arr[::2]—>输出2, 9, 4, 6
- arr[3::]—>输出1, 4, 7, 6, 8
- arr[3::-1]—>输出1, 3
- arr[-1]—>输出8
- arr[::-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来提高运算速度。