使用 Python 移除指定范围外的所有子列表


在 Python 中,有多种方法可以清除超出指定范围的子列表。用户可以通过利用列表推导式、迭代删除或过滤和复制来有效地完成此任务。列表推导式提供了一种简洁的方法,通过根据给定条件创建新的列表来实现。迭代删除通过删除不满足范围条件的子列表来修改原始列表。过滤和复制在内存效率和可读性之间取得了平衡。在本文中,用户将了解如何使用 Python 移除指定范围外的所有子列表。

方法 1:使用列表推导式方法移除指定范围外的所有子列表

列表推导式是操作 Python 中列表的一种简洁而优雅的方式。它允许我们通过应用某些条件来基于现有列表创建新列表。要移除超出指定范围的子列表,我们可以使用列表推导式结合适当的条件。让我们深入了解计算和执行步骤 -

算法

  • 步骤 1 - 定义名为 remove_sublists_range() 的指定函数,该函数定义中包含三个参数。

  • 步骤 2 - 检查子列表的最小值是否在给定范围内。如果是,则保留子列表;否则,排除它。

  • 步骤 3 - 将过滤后的子列表存储到新列表中。

  • 步骤 4 - 打印结果列表。

示例

def remove_sublists_range(lst, lower, upper):
    filtered_lst = [sublist for sublist in lst if min(sublist) >= lower and max(sublist) <= upper]
    return filtered_lst

# Example usage
main_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
lower_bound = 4
upper_bound = 10
result = remove_sublists_range(main_list, lower_bound, upper_bound)
print(result)

输出

[[4, 5, 6], [7, 8, 9]]

方法 2:使用迭代删除方法移除指定范围外的所有子列表

算法

在这种方法中,我们将重点关注原始列表并删除超出给定范围的子列表。这将通过就地修改初始列表来实现。让我们回顾一下计算和用法步骤 -

  • 步骤 1 - 定义名为 remove_sublists_range() 的函数。

  • 步骤 2 - 使用 while 循环迭代每个子列表。

  • 步骤 3 - 检查子列表的最小值是否在给定范围内。如果是,则保留子列表;否则,将其从主列表中删除。

  • 步骤 4 - 打印结果列表。

示例

def remove_sublists_range(lst, lower, upper):
    i = 0
    while i < len(lst):
        sublist = lst[i]
        if min(sublist) < lower or max(sublist) > upper:
            lst.pop(i)
        else:
            i += 1
    return lst

# Example usage
main_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
lower_bound = 4
upper_bound = 10
result = remove_sublists_range(main_list, lower_bound, upper_bound)
print(result)

输出

[[4, 5, 6], [7, 8, 9]]

方法 3:使用追加方法移除指定范围外的所有子列表

此方法结合了先前方法的优点。它通过基于给定范围筛选原始列表来创建新列表,类似于列表推导式方法,但不会为每个循环创建新列表。让我们研究一下计算和用法步骤

算法

  • 步骤 1 - 定义指定范围,该范围指示上下限。

  • 步骤 2 - 创建一个列表以存储筛选后的子列表

  • 步骤 3 - 迭代主列表中的每个子列表。

  • 步骤 4 - 在条件中检查 min(sublist) 是否在给定范围内。如果是,则将子列表添加到 filtered_lst 中。

  • 步骤 5 - 打印结果列表。

示例

def remove_sublists_range(lst, lower, upper):
    filtered_lst = []
    for sublist in lst:
        if lower <= min(sublist) < upper:
            filtered_lst.append(sublist)
    return filtered_lst

# Example usage
main_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
lower_bound = 4
upper_bound = 10
result = remove_sublists_range(main_list, lower_bound, upper_bound)
print(result)

输出

[[4, 5, 6], [7, 8, 9]]

结论

在本文中,我们演示了三种不同的方法来使用 Python 删除超出给定范围的子列表。第一种方法使用列表推导式创建满足指定范围约束的新列表。第二种方法涉及迭代删除,它通过删除超出范围的子列表直接修改原始列表。列表推导式很复杂,但会创建新列表,迭代删除会直接修改列表,而过滤和复制则在存储效率和可读性之间取得平衡。

更新于: 2023年9月4日

156 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告