Python中文
首页
教程
问答
标签
搜索
登录
注册
Python能有效地找到排序列表中的某个地方吗?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个清单:</p> <pre><code>x = ['c', 'a', 'e'] </code></pre> <p>我可以排序此列表:</p> <pre><code>x_sorted = sorted(x) </code></pre> <p><code>x_sorted</code>现在是<code>['a', 'c', 'e']</code></p> <p>现在假设我有一个新变量<code>y = 'd'</code></p> <p>我想找出这个新变量在<code>x_sorted</code>中的位置。在本例中,新变量<code>y</code>包含字符串<code>'d'</code>,因此它将作为<code>['a', 'c', 'd', 'e']</code>放置在列表的索引2中。我希望尽可能有效地找出这个索引号(因为我必须重复这个过程很多次)。你知道吗</p> <p>下面是我编写的一个函数,它非常简单:</p> <pre><code>def f(x_sorted, y): new_list = x_sorted[:] + [y] return sorted(new_list).index(y) </code></pre> <p>这给了我正确的答案。你知道吗</p> <p>我想知道是否有更好更有效的方法来做这件事,因为<code>f</code>将被称为100000+次。你知道吗</p> <p>提前谢谢!你知道吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>这肯定不是您在问题中演示的有效方法,在这种情况下,您每次都对其进行排序,因此如果执行此操作<code>m</code>倍,复杂性将是<code>O(m*n*log(m))</code>,因此首选方法是对其排序一次,然后简单地遍历列表以查找索引,这可以在<code>O(n)</code>中完成,但是最好的方法是使用二进制搜索,现在您的时间复杂度将降到<code>O(log(n))</code>。对于这类问题来说,这是最小的复杂性。你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
将Pandas数据帧转换为PyTorch张量?
5 回答
将Pandas数据帧转换为scipy稀疏矩阵
6 回答
将Pandas数据帧转换为Spark Datafram时出现问题
7 回答
将pandas数据帧转换为spark DataFram时出错
5 回答
将Pandas数据帧转换为spark datafram时收到错误
5 回答
将Pandas数据帧转换为Spark数据帧
10 回答
将Pandas数据帧转换为Tensorflow数据
3 回答
将Pandas数据帧转换为tkinter obj
2 回答
将pandas数据帧转换为XML
8 回答
将Pandas数据帧转换为值sql语句
6 回答
将pandas数据帧转换为元组
8 回答
将pandas数据帧转换为元组列表
3 回答
将pandas数据帧转换为元组列表并删除所有pandas数据类型
4 回答
将pandas数据帧转换为具有头和数据类型的numpy数组
9 回答
将pandas数据帧转换为内存中的拼花地板,并将其加载到Python中的Hadoop中
3 回答
将pandas数据帧转换为内存中类似文件的对象?
4 回答
将Pandas数据帧转换为内存功能(&F)
8 回答
将pandas数据帧转换为列表列表
1 回答
将pandas数据帧转换为列表列表以输入到RNN
2 回答
将Pandas数据帧转换为单行DataFram
7 回答