Python 如何按指定值分割列表并生成含分隔符的元组
按指定值将列表分割为元组的实现
可直接运行的实现代码
def some_func(input_list, target): # 收集所有分割值的索引位置 cut_points = [idx for idx, val in enumerate(input_list) if val == target] result = [] for m in range(len(cut_points)): # 计算切片起点 start = 0 if m == 0 else cut_points[m-1] + 1 # 计算切片终点 end = len(input_list) if m == len(cut_points) - 1 else cut_points[m+1] result.append(tuple(input_list[start:end])) return result # 测试用例 list1 = [2, 1, 1, 2, 1, 2, 1, 1] print(some_func(list1, 2))
运行后输出和你给出的期望结果完全一致:
[(2, 1, 1), (1, 1, 2, 1), (1, 2, 1, 1)]
切分规则说明
- 先遍历输入列表,把所有等于指定分割值的位置全部记录为切点,过程中不剔除任何元素
- 第一个元组从列表起始位置开始,到第二个切点的位置截止
- 从第二个元组开始,每个元组从上一个切点的下一位开始,到下下个切点的位置截止
- 最后一个元组从上一个切点的下一位开始,一直截取到列表末尾
- 所有截取的片段直接转为元组,完整保留原列表内的所有数值
内容的提问来源于stack exchange,提问作者HaskellPlease
相关产品推荐
相关产品推荐

