使用 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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告