使用 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 刪除超出給定範圍的子列表。第一種方法使用列表推導式建立滿足指定範圍約束的新列表。第二種方法涉及迭代刪除,它透過刪除超出範圍的子列表直接修改原始列表。列表推導式很複雜,但會建立新列表,迭代刪除會直接修改列表,而過濾和複製則在儲存效率和可讀性之間取得平衡。