Python按给定负数值区间筛选元素生成目标字典问题求助
问题排查与修复
原有代码错误点
- 增量赋值语法错误:
j=+1实际是将j直接赋值为1,不是自增1,会导致程序进入死循环,正确写法为j += 1 - 缺少排序步骤:你用
next()匹配索引的逻辑前提是列表b已经排序,而原始b是乱序状态,无法通过顺序查找定位到所有符合区间的元素 - 区间筛选逻辑不完整:原有逻辑仅尝试查找第一个匹配元素的索引,没有遍历收集所有符合要求的元素,完全无法得到预期的列表结果
修正后实现方案
小数据量场景下直接用列表推导式做区间筛选即可,逻辑清晰不容易出错:
a = [-20,-15,-10,-5,0] b = [-3,-10,-14,-19,-13,-5,-0.5] res = {} # 遍历a的相邻元素生成区间 for i in range(len(a) - 1): left_bound = a[i] right_bound = a[i+1] # 可根据实际需求调整区间判断规则,比如要包含左边界就改为`left_bound <= x < right_bound` matched = [x for x in b if left_bound < x <= right_bound] res[f"{left_bound} to {right_bound}"] = matched print(res)
如果数据量较大,可以先对b排序后用双指针法检索,性能更高。
内容的提问来源于stack exchange,提问作者7Programmer
相关产品推荐
相关产品推荐

