Python优化

iteritems比items更好用,优点是:迭达超大字典时,items的话内存会瞬间夸大两倍,因为列表对象会一次性把所有元素加载到内存。

1.链式比较操作
if 18 < age < 60:
2.if/else三目运算
text = ‘男’ if gender == “male” else ‘女’
3.真值判断
布尔 字符串 数字 容器 None
False: False(0) “” 0,0.0 [],{},(),set() None
True: True(1) 非空 非0 至少有一个元素的容器 非None对象
4.for else
for循环遍历完所有元素执行else,break可中断else
5.yield 生成器(斐波那契数列)
def fib(n):
a,b = 0,1
while a < n:
yield a
a, b=b, a+b
6.获取字典元素
d.get(“name”, “default”))
7.预设字典默认值
data = [(‘foo’, 10), (‘bar’, 20), (‘foo’, 39), (‘bar’, 49)]
groups = {}
for (key, value) in data:
groups.setdefault(key, []).append(value)

第二种:
from collections import defaultdict
groups = defaultdict(list)
for (key,value) in data:
groups[key].append(value)

8.字典推导式
numbers = [1,2,3]
my_dict = {number:number * 2 for number in product_list if number>1}

deque:deque(maxlen=N)
队列已满时会自动移除最老的那条记录

在集合nums中寻找最大或最小的k个元素
heapq.nlargest(k, nums)
heapq.nsmallest(k, nums)

构建一键多值字典
d = defaultdict(list)
for key,value in pairs:
d[key].append(value)

精准控制字典中的元素顺序,以便序列化
d = OrderedDict()
json.dumps(d)

将字典的键值反转过来:zip()
字典排序:sorted()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值