【问题标题】:Python 3 - Alphabetical index finderPython 3 - 字母索引查找器
【发布时间】:2015-04-16 02:34:11
【问题描述】:

我真的需要关于在哪里为我的程序启动此功能的帮助。这基本上就是我必须做到的!

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

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

我尝试在另一个地方询问这个我相信但我的措辞有点错误。我是新来的,所以不太确定该网站的工作!

感谢您的帮助,非常感谢!这是我开始我的功能的方式:

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

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

当前文件中的数据在每一行都是这样设置的:

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

再次感谢您!

【问题讨论】:

  • 如果可能,请尝试为参数包含一些示例输入,并且一个示例会更好理解。
  • 谢谢特兰维尔!我刚刚添加了一些关于文件结构的更多信息。

标签: python string list indexing


【解决方案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 来模仿其功能,但如果您不使用大量名称列表,则该算法的效率可能微不足道。

【讨论】:

    猜你喜欢
    • 2017-05-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多