python中os与sys两模块的区别,python 库,包,模块的区别
等分模块包含两个主要功能:等分和insort。二等分和insort内部使用二分搜索法算法,分别用来搜索和插入规则数组中的元素。
平分/基本/
将某物分成两等份。平分
1等分函数
卢西亚诺拉马尔霍举了一个大海捞针的例子来说明
haystack=[ 1,4,5,6,8,12,15,20,21,23,26,29,30 ]
需要les=[ 0,1,2,5,8,10,22,23,29,30,31 ]
row _ fmt= { 0:2d } @ { 1:2d } { 2 } { 0:2d }
defdemo(二等分_fn):
forNeedleinreversed(针头) :
position=平分_fn(干草堆,针))))))).
偏移量=位置*
print(row_fmt.format(针,位置,偏移) )
if __name__==__main__ :
if sys.argv[-1]==left :
平分_ fn=平分.平分_左
否则:
平分_ fn=平分.平分
打印(演示: ),平分_fn。__name__)))).
打印(干草堆-,)。加入)- % n干草堆) )
Demo(等分_fn))是
执行结果:
演示:对分_右
干草堆-14568 12 15 20 21 23 23 26 29 30
31 @ 14 31
30 @ 1430
29 @ 1329
23 @ 11 23
22 @922
10 @ 5 10
8 @ 5 8
5 @ 3 5
2 @ 1 2
1 @ 1 1
0@0
Python函数的一个特性是函数名可以作为参数使用,如二等分_fn的例子所示。这样函数更加灵活,函数名可以作为程序执行参数动态加载。
草堆是一堆干草,针是一堆针。大海捞针,本质上就是在已经确定的序列中寻找某个数字。
自定义的demo(二分_fn)函数,先计算位置,然后用位置计算需要多少个分隔符作为打印偏移量,按照最后定义的格式打印。
Str.format))用于格式化字符串,您可以指定参数的位置。例如,语法{0:2d}中的0表示第一个条目,2d表示总长度。当它不够时,空间被用作占位符。d表示十进制有符号整数。
Str.format))格式也可以设置对齐方式。居中,左右对齐。因此,{0:2d}表示第一个条目左对齐,两位数是带小数符号的整数。
__name__是python内置的class属性,存在于python程序中,表示相应的程序名。对于主线程,它的内置名是__main__。
如果在程序运行的时候添加了left参数,那么在程序的自定义函数中就会调用平分_left函数。二等分函数实际上是二等分_右函数的别名。
等分_左函数和等分函数的区别如下:
section _ left函数返回与原始序列中插入的元素相等的元素位置。插入新元素时,新元素将位于等效元素之前。
2.2 .二等分函数返回元素之后的位置,该位置等于原始序列中插入的元素。插入新元素时,新元素将放置在等效元素之后。
二等分_左函数的执行结果:
演示:左等分
干草堆-14568 12 15 20 21 23 23 26 29 30
31 @ 14
31
30 @ 13 30
29 @ 12 29
23 @ 9 23
22 @ 9 22
10 @ 5 10
8 @ 4 8
5 @ 2 5
2 @ 1 2
1 @ 0 1
0 @ 0 0
python官方文档还引用了一个使用等分函数输出测试分数的示例程序:
def等级(分数,断点=[60,70,80,90],等级=FDCBA ):
i=二等分.二等分(断点,得分)
返回等级[i]
if __name__==__main__ :
结果=[33,99,77,70,89,90,100中分数的等级(分数)]
logging.info(结果- %s ,结果)
运行结果:
信息-结果- [F , A , C , C , B , A , A]
自定义等级()定义了三个参数:
参数名称
解释
得分
测验分数
断点
等级边界值;这里分为5档;90及以上,80 ~ 89,70 ~ 79,60 ~ 69及60以下。
等级
评估分为范围。
grade()函数首先根据传入的分数通过二等分()函数找到自己的位置,然后将这个位置传入grades序列中得到评价分数。
在主线程中,用语法中的for迭代表示学生成绩的序列,将分数传入grade()函数计算评价分数,最后通过序列一次性输出。
Insort功能
因为排序是一项耗时的任务,所以对于一个有序的序列,在添加一个元素时,最好保持它的有序性。insort函数确保该序列在插入时总是有序的。
尺寸=10
我的列表=[]
对于范围内的I(尺寸):
new _ item=random . rand range(SIZE * 3)
平分. insort(我的列表,新项目)
打印( % new_item,my_list)
运行结果:
18 - [18]
8 - [8, 18]
21 - [8, 18, 21]
5 - [5, 8, 18, 21]
19 - [5, 8, 18, 19, 21]
13 - [5, 8, 13, 18, 19, 21]
20 - [5, 8, 13, 18, 19, 20, 21]
4 - [4, 5, 8, 13, 18, 19, 20, 21]
15 - [4, 5, 8, 13, 15, 18, 19, 20, 21]
2 - [2, 4, 5, 8, 13, 15, 18, 19, 20, 21]
RAND()将返回给定参数randrange内的随机数,但不包括边界值。
你可以看到每次插入的时候,顺序都是按顺序的。
Print (-%new_item,my_list)采用%s格式语法,-定义new_item值的格式,my _ list会在格式后自动挂起。所以在这里,第二个百分号后面没有加括号,要格式化的参数是圈起来的。
Insort还有一个兄弟叫insort_left,底层用的是平分_left。insort_left函数将新元素放在它的对等元素前面。
另外,二等分函数和insort函数都有两个可选参数(lo和hi),可以用来缩小要搜索的序列范围。lo的默认值是0,hi的默认值是序列的长度。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。