FluentPython读书笔记3 --2-8.1

本文主要介绍了Python内置的bisect模块,包括bisect、bisect_left和bisect_right等函数的使用,强调了在操作前需要确保列表已排序。同时,通过示例展示了这些函数如何确定插入位置,特别是在处理重复元素时的区别。最后,提到了sys.argv[]参数自动转化为字符串的特点。
摘要由CSDN通过智能技术生成
# -*- coding:utf-8 -*-
import bisect
import sys

HAYSTACK = [1, 4, 5, 6, 8, 12, 15, 20, 21, 23, 23, 26, 29,30]
NEEDLES = [0, 1, 2, 5, 8, 10, 22, 23, 29, 30, 31]

ROW_FMT = '{0:2d} @ {1:2d}    {2}{1:<2d}'

def demo(bisect_sn):
        for needle in reversed(NEEDLES):
                position = bisect_sn(HAYSTACK, needle)
                offset = position * '  |'
                print ROW_FMT.format(needle, position, offset)

if __name__ == '__main__':
        if sys.argv[-1] == 'left':
                bisect_fn = bisect.biset_left
        else:
                bisect_fn = bisect.bisect
        print'DEMO: ', bisect_fn.__name__
        # '%2d' % n 相当于一个整体
        print'haystack ->', ' '.join('%2d' % n for n in HAYSTACK)
        demo(bisect_fn)
  1. reversed() 返回一个反转迭代器:
# 这么看for循环只要是一个迭代器都可以 ?
>&g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值