在某些情况下如何从列表中删除元素?

时间:2018-11-29 16:37:07

标签: python binary-search

考虑到以下列表,我想在python中实现二进制搜索算法:

Fibonacci_Seq = [1,1,2,3,5,8,13,21,34,55,89]

所以,我写了一个函数来进行计算,但是当我进入这段代码时,我不知道该怎么做:

min = Fibonacci_Seq[0] #is 1
max = Fibonacci_Seq[-1] #is 89
goal = Fibonacci_Seq[4] #Equals to 5
guess = (min+max)//2  #Equals to 45
if guess > goal: #Is true
            (guess-1)//2 #Equals to 22
            del Fibonacci_Seq[the elements that are less than 22]

代替“小于22的元素”,我可以写些什么来消除小于22的数字,因为放置基本的“ <=>”符号不起作用?

2 个答案:

答案 0 :(得分:1)

进行修改的二进制搜索,以找到第一个大于或等于22的元素的索引,然后仅对现有列表进行切片。

在您的情况下,索引为8,以使Fibonacci_Seq[8]=34,然后将列表切为Fibonacci_Seq=Fibonacci_Seq[8:]

答案 1 :(得分:0)

您可以使用numpy:

ggplot(data=stack) +
  geom_density(aes(x=OfferPrice, group=Country, fill=Country), 
               alpha=0.5, adjust=2) +
  facet_grid(~Country, scales = "free_x") +
  theme_bw()