[045]Python使用技巧总结
来源:互联网 发布:神圣罗马帝国 知乎 编辑:程序博客网 时间:2024/06/09 22:55
一,排序
dict按照key 排序:
1、method 1.
items
=
dict
.items()
items.sort()
for
key,value
in
items:
print
key, value
# print key,dict[key]
2、method 2.
print
key,
dict
[key]
for
key
in
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)
- [045]Python使用技巧总结
- Python爬虫技巧总结
- Python 技巧总结
- python 技巧总结
- python技巧总结
- Python requests 技巧总结
- Python使用技巧(自定义)
- Python使用技巧
- Python使用小技巧
- python yield使用技巧
- python:科普 使用技巧
- Python一些使用技巧
- python format 使用 技巧
- python使用技巧1
- Python 使用技巧 常见问题
- python常见使用技巧
- Python使用技巧集合
- python使用技巧
- Httpd2.4响应变慢没有反应的解决方法,甚至造成服务器死机的解决方法
- 安卓颜色相关
- STL源码剖析-序列式容器之heap和priority_queue
- 关于api-ms-win-crt-runtimel1-1-0dll缺失的解决方案
- 转:飝兒物語的“Linux创建、删除文件夹”
- [045]Python使用技巧总结
- 在嵌入式linux下搭建java运行环境
- 在Linux系统中如何修改文件夹读写权限
- Go获取当前时间
- java面试④数据库部分
- 把apk安装包编译到system.img
- 什么是Git?(看到大牛的解释分享一下)
- 图像的长宽以及灰度、RGB图像的像素原理分布
- Android性能优化-内存泄漏(下)