Python对分列表
我需要编写一个函数,它接受一个列表并将其平分(就像平分模块一样,但我不能使用它)。我通常会展示我到目前为止所做的事情,但如果没有模块,我真的不知道怎么做,所以我希望有人能帮我一点忙。下面是我需要弄清楚的确切问题:Python对分列表,python,bisect,Python,Bisect,我需要编写一个函数,它接受一个列表并将其平分(就像平分模块一样,但我不能使用它)。我通常会展示我到目前为止所做的事情,但如果没有模块,我真的不知道怎么做,所以我希望有人能帮我一点忙。下面是我需要弄清楚的确切问题: 编写一个名为bisect的函数,该函数接受一个已排序的列表和一个目标值,并返回列表中该值的索引(如果有),如果没有,则返回该值的索引。bisect模块跟踪列表,使其保持排序,而不必每次插入元素时都求助。您需要实现的方法只需要在排序列表中搜索 def bisect(sortedlist,
编写一个名为bisect的函数,该函数接受一个已排序的列表和一个目标值,并返回列表中该值的索引(如果有),如果没有,则返回该值的索引。bisect模块跟踪列表,使其保持排序,而不必每次插入元素时都求助。您需要实现的方法只需要在排序列表中搜索
def bisect(sortedlist,targetvalue,firstindex=0,lastindex=None):
if(len(sortedlist)==0):
return None
if(len(sortedlist)==1):
if(sortedlist[0]==targetvalue):
return firstindex
else:
return None
center = int(round(len(sortedlist)/2))
if(sortedlist[center]==targetvalue):
return firstindex+center
if(targetvalue>sortedlist[center]):
return bisect(sortedlist[center+1:lastindex],targetvalue,center+1,lastindex)
else:
return bisect(sortedlist[0:center],targetvalue,firstindex,center-1)
这基本上是进行二进制搜索。
在递归循环的后续调用中,通过传递索引来跟踪原始列表的索引。我正在做“思考python”第10章练习8中的作业,我厌倦了上面fred编写的代码。它似乎有一些错误。 1.计数器不适用于具有100k字符串的长列表 2.有时,对于我确定在列表中的事情,它不返回任何值 所以我稍微调整了一下: 这是我的版本: 它工作得非常好,它使用沼泽2.0中名为words.txt的单词列表对其进行了测试,该单词列表最初来自moby集合:113809of.fic 希望这能帮助你们中那些在对分计划中挣扎的人
def bisects (list,x,counter=0):
if len(list)==0:
return x,'is not in the list'
elif(len(list)==1):
middle = 0
else:
middle = int(len(list)/2)
if x == list[middle]:
return counter, x,'is in the list'
elif x < list[middle]:
counter +=0
return bisects(list[0:middle],x,counter)
elif x > list[middle]:
counter +=middle
return bisects(list[middle+1:],x,counter)
def对分(列表,x,计数器=0):
如果len(list)==0:
返回x,“不在列表中”
elif(len(list)==1):
中间=0
其他:
中间=整数(长(列表)/2)
如果x==列表[中间]:
返回计数器x“在列表中”
elif x<列表[中间]:
计数器+=0
返回二等分(列表[0:中间],x,计数器)
elif x>列表[中间]:
计数器+=中间
返回二等分(列表[中间+1:],x,计数器)
如果一位大师能帮我纠正这个缺陷,那也太好了,谢谢,这是家庭作业吗?我想是的。这个问题有任何性能限制吗?如果没有,,如果你愿意,你可以使用线性搜索。很抱歉,我不了解blender,希望我能走上正确的道路,Greg,我不认为它有性能限制。我们只是问它是否是家庭作业,因为很少有人要求你在避免内置搜索的同时重新实现某些东西模块,除非是用来测试理解能力的家庭作业。你试过什么?你试的时候发生了什么?你知道对分模块应该做什么吗?您知道如何检查列表中的各个元素吗?对不起,我没有先阅读问题中的注释。我在这个网站上有点冲动,想回答任何问题,却不考虑提问的原因。让我们希望他通过看我的代码,然后编写自己的代码来学习。