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() 方法,以及许多其他可以替换这些子列表的方法。每种方法都有其独特的解决问题的方法,您可以根据自己的需要选择任何合适且简单的方法。

更新于:2023年10月3日

浏览量 198

开启您的职业生涯

完成课程获得认证

开始学习
广告