您的位置:首页 > 编程语言 > Python开发

[045]Python使用技巧总结

2017-04-20 11:42 281 查看


一,排序


dict按照key 排序:

1、method 1.

2、method 2.

 


dict按照value排序:

method 1:

把dictionary中的元素分离出来放到一个list中,对list排序,从而间接实现对dictionary的排序。这个“元素”可以是key,value或者item。

method2:

下面给出python内置sorted函数的帮助文档:

sorted(...)

sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list


list排序:

list有sort方法:

  如:
   >>> s=[2,1,3,0]
   >>> s.sort()

   [0, 1, 2, 3]
二,set和list
set转成list方法如下:                                                     list转成set方法如下:
s = set('12342212')                                                       l = ['12342212']
print s    # set(['1', '3', '2', '4'])                                       s = set(l[0])
l = list(s)                                                                         print s    # set(['1', '3', '2', '4'])
l.sort()    # 排序                                                             m = ['11','22','33','44','11','22']
print l    # ['1', '2', '3', '4']                                               print set(m)    # set(['11', '33', '44', '22'])

可见set和lsit可以自由转换,在删除list中多个/海量重复元素时,可以先转换成set,然后再转回list并排序(set没有排序)。此种方法不仅方便且效率较高。

三,input和raw_input
raw_input()
直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。

raw_input() 将所有输入作为字符串看待,返回字符串类型。而
input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float )

input()
本质上还是使用 raw_input() 来实现的,只是调用完 raw_input() 之后再调用 eval() 函数,所以,你甚至可以将表达式作为 input() 的参数,并且它会计算表达式的值并返回它。

四,range和xrange

range会直接生成一个list对象

xrange
用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器,每次调用返回其中的一个值。

要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。

所以xrange做循环的性能比range好,尤其是返回很大的时候。尽量用xrange吧,除非你是要返回一个列表。

五,get

get(a,""):获得a的值,若没有则返回空

六,map

七,python
集合比较(交集、并集,差集):

集合支持一系列标准操作,包括并集、交集、差集和对称差集,例如:  

  

a = t | s          # t 和 s的并集    

b = t & s          # t 和 s的交集  

c = t – s          # 求差集(项在t中,但不在s中)  

d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)

详细介绍可参考:http://blog.csdn.net/isoleo/article/details/13000975

八,python
在不同层级目录import 模块的方法
http://blog.csdn.net/luo123n/article/details/49849649 http://www.cnblogs.com/kex1n/p/5971590.html
九,Python操作json

 json.dumps字符编码,不能显示中文问题:

要想得到字符串的真实表示,需要用到参数ensure_ascii=False(默认为True):

>>> json.dumps(obj,ensure_ascii=False)
'{"name": "\xe6\xb5\x8b\xe8\xaf\x95"}'

>>> print json.dumps(obj,ensure_ascii=False)
{"name": "测试"}


十,shell切分文件--split

split [-bl] file [prefix]
参数说明:

-b, --bytes=SIZE:对file进行切分,每个小文件大小为SIZE。可以指定单位b,k,m。

-l, --lines=NUMBER:对file进行切分,每个文件有NUMBER行。

prefix:分割后产生的文件名前缀。

十一,Python 大文件md5加密:

小文件或字符串加密:

import hashlib
data =  'This a md5 test!'
hash_md5 = hashlib.md5(data)
hash_md5.hexdigest()


大文件:

import hashlib

def get_file_md5(f):
m = hashlib.md5()

while True:
data = f.read(10240)
if not data:
break

m.update(data)
return m.hexdigest()

with open(YOUR_FILE, 'r') as f:
file_md5 = get_file_md5(f)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: