我想编写一个搜索函数,它接受一个值x和一个排序序列,并通过从第一个元素开始迭代序列元素来返回值应该去的位置。 x应该在列表中的位置应该是第一个位置,使它小于或等于列表中的下一个元素。
Example:>>> search(-5, (1, 5, 10))——0
>>> search(3, (1, 5, 10))——1
答案 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。