Python如何对列表按2、3交替的非固定间隔切片分组?
Python 交替步长拆分列表实现方案
你之前的固定步长写法只能按统一间隔拆分,要实现2、3交替的拆分规则,需要动态调整每次截取的切片长度,参考实现如下:
方法1:基础循环实现(可读性最高,适配所有长度的输入列表)
meta_stocks = [10, 9, 11, 15, 19, 22, 25, 11, 15, 17] result = [] current_index = 0 list_length = len(meta_stocks) # 初始步长为2,后续循环切换2和3 step = 2 while current_index < list_length: # 截取对应步长的切片 result.append(meta_stocks[current_index:current_index + step]) current_index += step # 切换步长 step = 3 if step == 2 else 2 print(result)
运行输出:[[10, 9], [11, 15, 19], [22, 25], [11, 15, 17]]
方法2:简洁迭代器实现
如果偏好更短的代码写法,可以用迭代器实现:
meta_stocks = [10, 9, 11, 15, 19, 22, 25, 11, 15, 17] it = iter(meta_stocks) step_cycle = iter(lambda: [next(it, None) for _ in range(5)], [None]*5) result = [] for group in step_cycle: valid = [x for x in group if x is not None] if not valid: break result.extend([valid[:2], valid[2:]] if len(valid)>2 else [valid]) print(result)
内容的提问来源于stack exchange,提问作者Tarun K
相关产品推荐
相关产品推荐

