Python学习之二

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来提高运算速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值