[045]Python使用技巧总结

来源:互联网 发布:神圣罗马帝国 知乎 编辑:程序博客网 时间:2024/06/09 22:55

一,排序

dict按照key 排序:

1、method 1.

items= dict.items()
items.sort()
for key,valuein items:
   print key, value # print key,dict[key]

2、method 2.

print key,dict[key]for keyin sorted(dict.keys())

 

dict按照value排序:

method 1:

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

method2:

#用lambda表达式来排序,更灵活:
sorted(dict.items(),lambda x, y: cmp(x[1], y[1]))
#降序
sorted(dict.items(),lambda x, y: cmp(x[1], y[1]), reverse=True)

下面给出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 hashlibdata =  'This a md5 test!'hash_md5 = hashlib.md5(data) hash_md5.hexdigest()

大文件:
import hashlibdef 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)


0 0
原创粉丝点击