刷leetcode发现有很多没怎么用过的函数,很方便,这里记录一下。
1.collections.Counter()
> from collections import Counter
> s="hello,it's me"
> result=Counter(s)#结果类似一个dict
Counter({'e': 2, 'l': 2, ' ': 1, "'": 1, 'i': 1, 'h': 1, 'm': 1, 'o': 1, ',': 1, 's': 1, 't': 1})
#这三个用法跟dict一样
>result.values()
>result.keys()
>result.items()
2.lambda 函数
晚上面试的时候悲剧了,dict怎么排序
>a={'a':7,'b':2,'c':1,'d':4}
#按值排序
>b=sorted(a.iteritems(),key=lambda item:item[1],reverse=False)
>b
[('c', 1), ('b', 2), ('d', 4), ('a', 7)]
#按key排序
>b=sorted(a.iteritems(),key=lambda item:item[0],reverse=False)
3.sorted函数 list.sort()
sorted(iterable[, cmp[, key[, reverse]]])
排序结果放入新生成的对象中
- iterable–可迭代对象
- cmp–比较函数
- key–比较关键字
- reverse–False(升序)True(降序)
>a={'a':7,'b':2,'c':1,'d':4}#a不会变,b保存排序结果
>b=sorted(a.iteritems(),key=lambda item:item[1],reverse=False)
>b
[('c', 1), ('b', 2), ('d', 4), ('a', 7)]
list.sort()
只用于列表的排序,排序结果写入原列表
>a=[1,4,2,0]
>a.sort()
>a
[0, 1, 2, 4]
4. dict.get
python字典,dict
>d={1:'a',2:'b',3:'c'}
>d[1]
'a'
>d.get(1,None)#如果key不存在,直接使用d[key]会报错,用get方法比较安全,可以指定不存在时的默认返回值
'a'
>d.get(4,-1)
-1
5. zip函数
zip函数接受0,1或多个列表作为参数,返回一个tuple列表
>x=[1,2,3]
>y=[4,5,6]
>z=[7,8,9]
>xyz=zip(x,y,z)#多个参数
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>zip(x)#1个参数
[(1,), (2,), (3,)]
>zip()#没有参数
[]
zip常用来字典的构造
>xy=zip(x,y)#
>d=dict(xy)
{1: 4, 2: 5, 3: 6}
zip搭配for循环,用于并行迭代
>for a,b in zip(x,y):
print a*b,
4 10 18
zip(*…)相当于unzip的过程
>x=[1,2,3]
>y=[4,5,6]
>z=[7,8,9]
>xyz=zip(x,y,z)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>zip(*xyz)#相当于unzip
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]