你可能不知道的python 高性能魔法(1)

本文分享了多种实用的Python编程技巧,包括使用timeit模块比较不同列表推导式的性能,通过namedtuple为元组定义别名,利用zip快速合并矩阵等。这些技巧能够帮助开发者提高代码效率。
# coding:utf-8
import timeit
import time

########################## 1. quickly_map.py #############################
rt = timeit.timeit('"-".join(str(n) for n in range(100))',
                  number=10000)
print(rt)
# 0.252703905106

rt = timeit.timeit('"-".join([str(n) for n in range(100)])',
                  number=10000)
print(rt)
# 0.234980106354

rt = timeit.timeit('"-".join(map(str, range(100)))',
                  number=10000)
print(rt)
# 0.152318954468


########################### 2.在现有基础上合并字典  ########################
rt1 = timeit.timeit("x = {'a': 1, 'b': 2}; y = {'b': 3, 'c': 4};z = dict(x, **y);",number=10000)
print rt1
rt2 = timeit.timeit("for i in x.keys(): y[i]=x[i];","x = {'a': 1, 'b': 2}; y = {'b': 3, 'c': 4};",number=10000)
print rt2

############################ 3.looking very good json!###########################
my_mapping = {'a': 23, 'b': {"c":"tornado","d":[1,2,3]}, 'c': 0xc0ffee}
print(my_mapping)
# {'b': 42, 'c': 12648430. 'a': 23}  

import json
print(json.dumps(my_mapping, indent=4, sort_keys=True))
# {
#     "a": 23,
#     "b": 42,
#     "c": 12648430
# }

########################### 4.share file ###################################
# 你如果想快速且简单地共享一个目录中的文件,你只需在终端执行下面对应版本的指令:

# Python2
# python -m SimpleHTTPServer

# Python 3
#python3 -m http.server

########################## 5.给元组起一个别名 ###############################
from collections import namedtuple
Student = namedtuple("student", "name age weight")
student1 = Student("jim", 20, 184)
print student1.name
print student1.age
print student1.weight
print student1

########################## 6.zip快速合并字典 ###############################
mat = [[1, 2, 3], [4, 5, 6]]
time_res1 = time.time()
res1 = zip(*mat)   ### 这里使用zip方法要快的多。
time_res2 = time.time()

print time_res2 - time_res1

print res1

time_res3 = time.time()
res2 = [[mat[j][i] for j in range(len(mat))] for i in range(len(mat[0]))]
time_res4 = time.time()
print time_res4 - time_res3
print res2

######################### 7. 求差集 ######################################

ret1 = {}
ret1["no_red"] = " ".join(sorted(list(set([str(i) for i in range(30)]) - set([str(i) for i in range(20)])))) or u"无"
### 虽然上面的方法写的貌似很繁琐,括号很多。但是毕竟是内建函数,运行速度很快。
print ret1

ret2 = {}
ret2["no_red"] = " ".join(k for k in [str(i) for i in range(30)] if k not in [str(i) for i in range(20)]) or u"无"
print ret2
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值