Python – 在列表中替换子列表
在本文中,我们将了解如何用新列表替换子列表的值。在处理列表操作时,您可能遇到过这个问题。在这里,我们将看到可以使用各种方法将子列表替换为其他列表。
让我们通过以下示例来了解这一点:
listItem = [1, 2, 3, 4, 5, 6] new_list = [7, 8, 9]
这里我们有一个名为 listItem 的列表,其中包含一些元素,还有一个名为 new_list 的列表。所以,我们想用 new_list 替换 listItem 的子列表。取索引范围为 2 到 5,如果我们用 new_list 的值替换这些索引值,那么我们的 listItem 将变为。
listItem : [1, 2, 7, 8, 9, 6]
让我们看看执行此操作以用 new_list 替换子列表的方法。
方法 1. 使用 split() 和 join() 函数。
在这种方法中,我们使用列表的切片和连接来用另一个新列表替换子列表。
示例
def replace_sublist(listItem, start, end, new_list): return listItem[:start] + new_list + listItem[end:] listItem = [1, 2, 3, 4, 5, 6] new_list = [7, 8, 9] updated_list = replace_sublist(listItem, 2, 5, new_list) print("Original list: ", listItem) print("new list to update is: ", new_list) print("Updated list after replacing sublist: ",updated_list)
输出
Original list: [1, 2, 3, 4, 5, 6] new list to update is: [7, 8, 9] Updated list after replacing sublist: [1, 2, 7, 8, 9, 6]
解释
在上面的示例中,我们使用切片来获取子列表之前和之后的部分。然后,我们将这些部分连接起来,这些部分是子列表之前的部分、新列表和子列表之后的部分。从示例中您可以看到,我们将索引范围指定为 2 到 5,并将新列表指定为 [7,8,9],因此我们的列表将在索引 [2..4] 处更新,我们的新列表将为 [1, 2, 7, 8, 9, 6]。
方法 2. 使用列表推导式。
此方法提供了一种使用现有列表遍历和创建列表的简便方法。
示例
def replace_sublist(listItem, start, end, new_list): return [new_list[i - start] if start <= i < end else element for i, element in enumerate(listItem)] listItem = [1, 2, 3, 4, 5, 6] new_list = [7, 8, 9] updated_list = replace_sublist(listItem, 2, 5, new_list) print("Original list: ", listItem) print("new list to update is: ", new_list) print("Updated list after replacing sublist: ",updated_list)
输出
Original list: [1, 2, 3, 4, 5, 6] new list to update is: [7, 8, 9] Updated list after replacing sublist: [1, 2, 7, 8, 9, 6]
解释
在上面的示例中,我们使用列表推导式技术使用 enumerate() 方法遍历原始列表。然后,我们用新列表替换 listItem 子列表元素。
方法 3. 使用列表赋值。
示例
def replace_sublist(listItem, start, end, new_list): listItem[start:end] = new_list return listItem listItem = [1, 2, 3, 4, 5, 6] new_list = [7, 8, 9] updated_list = replace_sublist(listItem, 2, 5, new_list) print("Original list: ", listItem) print("new list to update is: ", new_list) print("Updated list after replacing sublist: ",updated_list)
输出
Original list: [1, 2, 3, 4, 5, 6] new list to update is: [7, 8, 9] Updated list after replacing sublist: [1, 2, 7, 8, 9, 6]
解释
在上面的示例中,我们使用直接列表赋值技术直接将新列表赋值给子列表位置。我们使用 listItem[start : end] 将新列表赋值给子列表位置,Python 语言将自动用新列表替换子列表。与其他方法相比,这是一种非常简单的方法。
方法 4. 使用列表切片和 sum 运算符。
示例
def replace_sublist(listItem, start, end, new_list): return listItem[:start] + new_list + listItem[end:] listItem = [1, 2, 3, 4, 5, 6] new_list = [7, 8, 9] updated_list = replace_sublist(listItem, 2, 5, new_list) print("Original list: ", listItem) print("new list to update is: ", new_list) print("Updated list after replacing sublist: ",updated_list)
输出
Original list: [1, 2, 3, 4, 5, 6] new list to update is: [7, 8, 9] Updated list after replacing sublist: [1, 2, 7, 8, 9, 6]
解释
在上面的示例中,我们使用列表切片方法和 sum (+) 运算符来替换子列表。我们提取子列表之前和之后的部分,然后使用 sum (+) 运算符连接所有这些部分。
方法 5. 使用列表复制、清除和扩展。
示例
def replace_sublist(listItem, start, end, new_list): copied_listItem = listItem.copy() del copied_listItem[start:end] copied_listItem.extend(new_list) return copied_listItem listItem = [1, 2, 3, 4, 5, 6] new_list = [7, 8, 9] updated_list = replace_sublist(listItem, 2, 5, new_list) print("Original list: ", listItem) print("new list to update is: ", new_list) print("Updated list after replacing sublist: ",updated_list)
输出
Original list: [1, 2, 3, 4, 5, 6] new list to update is: [7, 8, 9] Updated list after replacing sublist: [1, 2, 7, 8, 9, 6]
解释
在上面的示例中,我们使用 list.copy() 方法创建主列表的副本,然后使用 del copied_listItem[start:end] 从复制的列表中删除给定范围的子列表。然后,我们使用 copied_listItem.extend(new_list) 将复制列表扩展为新列表元素。通过执行这些步骤,子列表将被 new_list 项目替换。
方法 6. 使用列表索引。
示例
def replace_sublist(listItem, start, end, new_list): for i in range(start, end): listItem[i] = new_list[i - start] return listItem listItem = [1, 2, 3, 4, 5, 6] new_list = [7, 8, 9] updated_list = replace_sublist(listItem, 2, 5, new_list) print("Original list: ", listItem) print("new list to update is: ", new_list) print("Updated list after replacing sublist: ",updated_list)
输出
Original list: [1, 2, 3, 4, 5, 6] new list to update is: [7, 8, 9] Updated list after replacing sublist: [1, 2, 7, 8, 9, 6]
解释
在上面的示例中,我们使用列表索引来替换子列表项。我们遍历子列表元素范围 range(start, end) 的索引范围,然后使用 listItem[i] = new_list[i - start] 将子列表元素替换为 new_list 的元素。从示例中您可以看到,从索引 2 到 5 的子列表将被新列表项替换,因此我们的列表将在索引 [2..4] 处更新,我们的新列表将为 [1, 2, 7, 8, 9, 6]。
因此,我们了解了使用其他 new_list 替换子列表的各种方法。我们看到了解决问题的各种方法,包括列表切片、列表推导式、列表索引、split() 方法,以及许多其他可以替换这些子列表的方法。每种方法都有其独特的解决问题的方法,您可以根据自己的需要选择任何合适且简单的方法。