Python - 合并列表中的范围字符

pythonserver side programmingprogramming

简介

Python 是一种功能强大的编程语言,以其简单性和灵活性而闻名。Python 中的一项常见任务是合并列表中的扩展字符。这包括将连续字符组合成单次运行表示。例如,[1, 2, 3, 6, 7, 8, 10] 将转换为 [1-3, 6-8, 10]。为了实现这一点,我们将突出显示列表,将每个部分与前一个部分进行比较。如果对比度没有上升到 1,我们将当前运行附加到未使用的列表中。最后,我们连接范围并返回合并结果。这种方法简化并压缩了原始列表,使其更加清晰和高效。

Python - 合并列表中的范围字符

  • 简化的信息表示:合并列表中的连续字符会重新排列信息的表示。与单独的顺序元素不同,混合的范围提供了简短而清晰的表示。这在处理大文件或数据集时可能特别有用。

  • 高级效率:合并连续字符会降低列表的总体值,从而提高记忆效率。较小的文件需要较少的存储空间,可以加快信息准备和管理。此外,在混合行上执行的操作比使用单个元素更有效。

  • 改进的数据分析:组合的扩展字符通过提供数据分布的清晰图表来促进数据分析任务。处理数字或连续数据时,更容易识别混合行中的模式、裂缝或不规则性。这对于不同的应用(例如数据分析、数据可视化和机器学习)可能很重要。

  • 简化的数据控制:组合行字符重新排列数据以控制操作。它允许简单地剪切、筛选和更改组合行,从而允许更高效和简短的代码。例如,在对一系列值执行计算或组合时,使用混合范围可以降低代码的复杂性。

  • 提高用户参与度:组合扩展字符可以提高客户端在涉及呈现或与信息关联的应用程序中的参与度。向客户显示合并的范围可以更清晰、更直观地呈现信息。它减少了混乱,使用户能够快速掌握数据中的基本设计或模式。

方法 1:迭代比较

算法

步骤 1:初始化一个空列表"合并",以存储合并的范围。

步骤 2:强调给定列表中的每个组件"num"。

步骤 3:如果"合并"被清除或当前"num"与上一个组件不平衡,则将当前"num"作为分区运行添加到"合并"。

步骤 4:此外,通过将"合并"中的最终运行的结论值设置为'num'。

步骤 5:重复步骤 3-4,直到列表内的所有组件都处理完毕。

步骤 6:返回"合并"列表。

示例

def merge_ranges_iterative(lst):
    merged = []
    for num in lst:
        if not merged or num != merged[-1][-1] + 1:
            merged.append([num])
        else:
            merged[-1].append(num)
    return merged

lst = [1, 2, 3, 6, 7, 8, 10]
result = merge_ranges_iterative(lst)
print(result)

输出

 [[1, 2, 3], [6, 7, 8], [10]]

方法 2:递归比较

算法

步骤 1:初始化清除列表"merged",以存储组合范围。

步骤 2:定义一个用户定义函数"merge_recursive",该函数有三个参数:"lst"、"start"和"end"。

步骤 3:在合作伙伴工作中,检查基本情况:如果"end"与"lst"较短的长度持平,则将从"start"到"end"(综合)的当前运行添加到"merged"并返回。

步骤 4:将当前组件"lst[end+1]"与以下组件进行比较。如果对比度没有上升到 1,则将当前运行从"start"到"end"添加到"merged",并递归调用"merge_recursive()",将"start"设置为"end+1",将"end"设置为"end+1"。

步骤 5:如果对比度为 1,则将"end"参数更改为"end+1",并重复步骤 4。

步骤 6:首先调用"merge_recursive"函数,将"start"和"end"设置为 0。

步骤 7:返回"merged"列表。

示例

def merge_ranges_recursive(lst):
    merged = []
    
    def merge_recursive(lst, start, end):
        if end == len(lst) - 1:
            merged.append(lst[start:end+1])
            return
        
        if lst[end+1] - lst[end] != 1:
            merged.append(lst[start:end+1])
            merge_recursive(lst, end+1, end+1)
        else:
            merge_recursive(lst, start, end+1)
    
    merge_recursive(lst, 0, 0)
    return merged

lst = [1, 2, 3, 6, 7, 8, 10]
result = merge_ranges_recursive(lst)
print(result)

输出

[[1, 2, 3], [6, 7, 8], [10]]

方法 3:连续范围构造

算法

步骤 1:按升序对输入列表"lst"进行排序。

步骤 2:初始化清除列表"merged",以存储合并的范围。

步骤 3:将"start"和"end"元素初始化为"lst"的第一个元素。

步骤 4:从"lst"的第二个元素开始,重复每个元素"num":如果"num"上升到"end"再一个,则将"end"替换为"num"。再举个例子,将当前从"start"到"end"的运行添加到"merged",将"start"和"end"更新为"num",然后重复该方法。

步骤 5:循环结束后,将最后一个从"start"到"end"的运行添加到"merged"。

步骤 6:返回"merged"列表。

示例

def merge_ranges_consecutive(lst):
    lst.sort()
    merged = []
    start = end = lst[0]
    
    for num in lst[1:]:
        if num == end + 1:
            end = num
        else:
            merged.append(list(range(start, end+1)))
            start = end = num
    
    merged.append(list(range(start, end+1)))
    return merged

lst = [1, 2, 3, 6, 7, 8, 10]
result = merge_ranges_consecutive(lst)
print(result)

输出

 [[1, 2, 3], [6, 7, 8], [10]]

结论

在本文中,我们研究了使用 Python 在列表中合并扩展字符的三种不同方法。迭代比较、递归比较和连续运行开发策略提供了实现所需结果的不同方法。除了语言结构说明之外,了解分步计算和比较 Python 代码对于有效实现这些方法至关重要。通过组合扩展字符,准备简化和压缩记录,在我们的 Python 程序的连贯性和效率方面取得长足进步。


相关文章