![]() |
1
2
为了完整性,这里有一个解决方案
请注意,上面假设每个组中至少有一个项目,否则它将给出来自脚本的不同结果,即:
而不是
这是一个固定的字典解决方案。在某种程度上,字典查找时间将开始占主导地位,但也许它足够快,您喜欢这样。
|
![]() |
2
2
你的代码是O(N 二 )这里有一个O(N)解决方案:
|
![]() |
3
2
一种方法(不承诺速度):
将元组列表分为两个列表:
由于第一个列表是经过排序的,所以您可以一直对它进行迭代,直到到达超出范围的元素为止。然后,您知道开始和结束元素的索引,这样您就可以从第二个数组中分割出字符串。继续,直到你有了所有的时间间隔。 我不确定传统的python列表有多高效,但是如果您的数据集足够大,您可以尝试使用一个numpy数组,它将很快切片。 |
![]() |
4
1
根据你的代码,我假设我之前的评论是正确的。这里的问题似乎是性能是O(n^2)-您重复列表理解(它迭代所有项)多次。 我说,使用一个简单的for循环。如果当前项目与上一个项目属于同一组,请将其添加到现有内部列表[[“A”]、[“B”]->[“A”]、[“B”、“C”]。如果没有,请将其添加到新的内部列表中,或者首先添加空的填充列表。 |
![]() |
5
1
展开AM的答案,使用默认的dict,floor将键按间隔进行划分,以正确地将它们分开。
|
![]() |
6
1
下面是一个使用xrange的步骤行为的懒惰方法:
|
![]() |
7
0
使用迭代器进行延迟计算怎么样? 这应等同于您的初始解决方案:
|
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |