Python 3 - 字母索引查找器

时间:2015-04-16 02:34:12

标签: python string list indexing

我真的需要帮助我的程序启动此功能的位置。这基本上就是我要做的事情!

它有两个参数......第一个参数是表示名称的字符串。第二个参数是按字母顺序排列的字符串列表。

该函数返回一个整数,指示名称列表中的位置或索引,这样如果您将给定的名称字符串插入该索引的列表中,该列表仍将按字母顺序排列。

我试着在另一个地方询问我相信但是我说这有点不对。我是新来的,所以不太确定在网站上工作!

感谢您的帮助,非常感谢!以下是我开始运作的方式:

def find_position(name, stringslist):    
    for line in stringslist:
        newlist = line.split(",")
        if newlist[0] =

该函数不会插入名称,也不会更改任何当前名称。它只返回应插入新名称的位置。

当前文件中的数据在每一行都设置如下:

名称,数据,数据 黄鳍,4.05,17.0

再次感谢你!

1 个答案:

答案 0 :(得分:1)

您可以使用O(n)时间复杂度的朴素线性搜索:

def find_position(s, l):
    for i, e in enumerate(l):
        if s <= e:
            return i
    return len(l)

或带有bisect模块的O(log n)算法:

def find_position(s, l):
    from bisect import bisect_left
    return bisect_left(l, s)

如果你不能使用bisect模块,可以通过实现binary search来模仿其功能,但如果你不使用大型列表,算法的效率可能微不足道名字。