Python搜索功能

时间:2015-03-17 02:21:53

标签: python

我想编写一个搜索函数,它接受一个值x和一个排序序列,并通过从第一个元素开始迭代序列元素来返回值应该去的位置。 x应该在列表中的位置应该是第一个位置,使它小于或等于列表中的下一个元素。

 Example:>>> search(-5, (1, 5, 10))——0
         >>> search(3, (1, 5, 10))——1

2 个答案:

答案 0 :(得分:2)

如果列表中存在较大的差距,那么构建每个项目的列表会浪费一些资源,相反,您可以遍历每个列表项,直到输入大于该值。

就您的代码而言 -

def search(input,inputList):
    for i in range( len( inputList ) ):
        if inputList[i]>input:
            return i
    return len( inputList )

print search(-5, (1, 5, 10))
#Result: 0
print search(3, (1, 5, 10))
#Result: 1

要将其插入列表,这可行,我根据索引将列表拆分为2,并在中间添加值。

def insert(input,inputList):
    index = search(input,inputList)                    #Get where the value should be inserted
    newInput = [input]+list(inputList[index:])         #Add the end of the list to the input
    if index:
        newInput = list(inputList[:index])+newInput    #Add the start of the list if the index isn't 0
    return newInput

print insert(-5, (1, 5, 10))
#Result: (-5, 1, 5, 10)
print insert(3, (1, 5, 10))
#Result: (1, 3, 5, 10)

答案 1 :(得分:1)

由于有人回答了类似的问题,我将简要描绘一下你可能想做的事情。

声明一个列表并用你的东西填充它;     mylist = [1,2,3,5,5,6,7]

然后只需创建一个函数并迭代列表;

def my_func( x, mylist):
    for i in mylist:
        if((mylist[i] == x)|| (mylist[i] > x)):
            return i

在列表中给出3(1,2,3,4,5),该函数应返回索引2。 给定列表中的3(1,2,4,5,6),它应该仍然返回2

你可能想检查我的python代码,因为我没有检查这个错误,我假设你知道一些python,如果你有骨架,你应该破解它。哦,python关心我做过的tabbibg。