python中一些比较实用的小技巧

话说python是一个大杂会,既可以用来做web,也可以用来做运维,还可以用来做数据科学(数据分析、数据挖掘、机器学习),这些东西java也可以来做,但是java总显得那么的笨重,java天生适合做框架、系统,这种小娇玲珑的一些功能朋python可以比java强,能提供快速的交互命令,最近在看scala,感觉是集python与java之所长,出来的一门新的编程语言,经常碰到各种各样的pyhon有用的小技巧,今天在此特意写一篇博客来做记录,后续会陆续更新:

(1)用来搜索某个目录下的某种类型文件(通配符)
import  glob
glob.glob('C:\\Users\\Administrator\\Desktop\\*.csv')
glob.glob('C:\\Users\\Administrator\\Desktop\\*\\*.r')

(2)对字典进行排序

test={'a':1,'b':3,'c':2}
sorted(test.iteritems(),key=lambda x:x[0],reverse=True) #对key排序
 sorted(test.iteritems(),key=lambda x:x[1],reverse=True) #对value排序

(3)对一个列表进行的不同类别计数 可以自己写function,下面用到的是python自带的
import  collections
test=['a','a','b','c','c','c']
collections.Counter(test)
结果为:
Counter({'c': 3, 'a': 2, 'b': 1})

(4)random模块中随机抽取
from  random  import choice
test=[1,2,3,4]
choice(test)  #每次选取其中的一个结果,每次都不一样

from  random  import sample
test=xrange(1000)
sample(test,100) #每次随机抽取100个,跟R里面的sample随机函数差不多

(5)改变工作目录
import  os
os.chdir('C:\\Users\\Administrator\\Desktop')

(6)计时工具timeit
import  timeit
def test():
    x=xrange(100000)
    return x
 def test_1():
    x=range(100000)
    return x

 timeit.timeit(test,number=1)
 timeit.timeit(test_1,number=1) 
 #可以看到xrange效率比range效率要高很多,包括numpy库中的arange,xrange效率是最高的

(7)对列表元素去重的方法
test=[1,1,2,2,3,3,3,4]
第一种方法:
list(set(test))

第二种方法:
{}.fromkeys(test).keys()
话说上次去在平安科技面试就面到这二种方法,只想说好偏


(8)设置pyhon中默认的编码

 import  sys

if  sys.getdefaultencoding()!='utf-8':
     reload(sys)
     sys.setdefaultencoding('utf-8')
else:
   pass
(9)find和rfind函数,字符串操作对象
这个函数与sas里面的find函数类型,找到返回为大于-1的数,,没找到为返回为-1的数,rfind从右边开始找起,一旦找到,则终止,跟findall有点区别,
test="abcdefgh"
test.find("g")
Out[12]: 6
test.rfind("z")
Out[14]: -1
test="abadefgh"
test.rfind("a")
Out[18]: 2
经常与glob模块中glob函数配合一起使用
  file_names = glob('.\Sample\*\*.txt')
        for file_name in file_names:
                if file_name.find("C000007") > -1:
                        file_type ="auto"
else:
pass
(10)利用numpy模块中的 np.concatenate()函数合并array
import  numpy as np
test=[np.array([1,2,3]),np.array([4,5,6,7]),np.array([9,10])]
test
Out[11]: [array([1, 2, 3]), array([4, 5, 6, 7]), array([ 9, 10])]
np.concatenate(test)
Out[12]: array([ 1,  2,  3,  4,  5,  6,  7,  9, 10])


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值