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

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

2018-03-15 16:17 337 查看
# 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: