
1 fox0001 2024-09-15 19:04:23 +08:00 via Android pandas |
2 ho121 2024-09-15 19:04:45 +08:00 via Android OrderedDict |
3 nagisaushio 2024-09-15 19:13:14 +08:00 via Android OrderedDict |
4 NoOneNoBody 2024-09-15 19:27:22 +08:00 in 低效的话,应该元素很多,那还是 pandas+1 ,遍历操作可以转为向量化 |
5 sagaxu 2024-09-15 20:13:57 +08:00 from sortedcontainers import SortedSet |
6 Sawyerhou 2024-09-15 23:10:18 +08:00 via Android 如果 push, pop 等其他功能不特别复杂,自定义 list+set 很高效。 |
7 vituralfuture 2024-09-16 11:33:12 +08:00 via Android 用内置的 dict ,cpython 的 dict 实现保证遍历出的键是升序的,in 也很高效。把你的数据做完键存进去,值随意选,不使用 |
8 Projection 2024-09-17 01:23:42 +08:00 创建一个类并自定义 __contains__ 魔术方法,实现则使用 bisect 二分查找。根据这个思路找 GPT 生成了代码: import bisect class OrderedList: def __init__(self, items): # 确保列表有序 self.items = sorted(items) # 自定义 in 操作,使用二分查找 def __contains__(self, item): # 使用 bisect 模块进行二分查找 index = bisect.bisect_left(self.items, item) # 检查查找到的索引是否在范围内,且对应元素是否与目标相等 return index < len(self.items) and self.items[index] == item # 支持遍历 def __iter__(self): return iter(self.items) # 使用示例 ordered_list = OrderedList([10, 1, 7, 3, 5]) # 遍历 for item in ordered_list: print(item) # 输出: 1 3 5 7 10 (有序) # 使用自定义的 in 操作(使用二分查找) print(7 in ordered_list) # 输出: True print(6 in ordered_list) # 输出: False |
9 johnsona 2024-09-17 15:42:41 +08:00 via iPhone sorted 不就好了吗 3.7 以上的 dict 便利顺序同插入顺序 |