1、在有序序列中用bisect查找某个元素的插入位置。
import bisect
import sys
HAYSTACK = [1, 4, 5, 6, 8, 12, 15, 20, 21, 23, 23, 16, 29, 30]
NEEDLES = [0, 1, 2, 5, 8, 10, 22, 23, 29, 30, 31]
ROW_FMT = '{0:2d} @ {1:2d} {2}{0:<2d}' # 第一个参数右对齐,{2}表示第三个参数‘ |’
"""
{0:2d} {1:3d} {2:4d}是什么意思?
解答
format()函数
字符串的参数使用{NUM}进行表示,0, 表示第一个参数,1, 表示第二个参数, 以后顺次递加;
这里面: {0:2d} 表示第一个参数x的格式。0 代表x,:2d 表示两个宽度的10进制数显示。
{1:3d} 表示第一个参数x*x的格式。1 代表x*x,:3d 表示三个宽度的10进制数显示。
{2:4d} 表示第一个参数x*x*x的格式。2代表x*x*x,:4d 表示四个宽度的10进制数显示。
"""
def demo(bisect_fn1):
for needle in reversed(NEEDLES):
position = bisect_fn1(HAYSTACK, needle) # 用特定的bisect函数来计算元素应该出现的位置
offset = position * ' |' # 利用该位置来计算出需要几个分隔符
print(ROW_FMT.format(needle, position, offset)) # 把元素和其该出现的位置打印出来
if __name__ == '__main__':
# sys.argv[-1] = 'left'
if sys.argv