Python - 用列表中的其他内容替换子列表

pythonserver side programmingprogramming更新于 2023/8/31 17:06:00

在本文中,我们将了解如何用新列表替换子列表值。在处理列表操作时,您可能遇到过这个问题。在这里,我们将看到各种方法,可以使用这些方法将子列表替换为其他列表。

让我们使用以下示例来了解这一点 -

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("原始列表: ", listItem)
print("要更新的新列表为: ", new_list)
print("替换子列表后更新的列表: ",updated_list)

输出

原始列表: [1, 2, 3, 4, 5, 6]
要更新的新列表为: [7, 8, 9]
替换子列表后更新的列表: [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("原始列表: ", listItem)
print("要更新的新列表为: ", new_list)
print("替换子列表后更新的列表: ",updated_list)

输出

原始列表: [1, 2, 3, 4, 5, 6]
要更新的新列表为: [7, 8, 9]
替换子列表后更新的列表: [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("原始列表: ", listItem)
print("要更新的新列表为: ", new_list)
print("替换子列表后更新的列表: ",updated_list)

输出

原始列表: [1, 2, 3, 4, 5, 6]
要更新的新列表为: [7, 8, 9]
替换子列表后更新的列表: [1, 2, 7, 8, 9, 6]

解释

在上面的例子中,我们使用直接列表分配技术将新列表直接分配给子列表位置。我们使用 listItem[start : end] 将新列表分配给子列表位置,python 语言会自动用新列表替换子列表。与其他方法相比,这是一种非常简单的方法。

方法 4. 使用列表切片和求和运算符。

示例

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("原始列表: ", listItem)
print("要更新的新列表为: ", new_list)
print("替换子列表后更新的列表: ",updated_list)

输出

原始列表: [1, 2, 3, 4, 5, 6]
要更新的新列表为: [7, 8, 9]
替换子列表后更新的列表: [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("原始列表: ", listItem)
print("要更新的新列表为: ", new_list)
print("替换子列表后更新的列表: ",updated_list)

输出

原始列表: [1, 2, 3, 4, 5, 6]
要更新的新列表为: [7, 8, 9]
替换子列表后更新的列表: [1, 2, 7, 8, 9, 6]

解释

在上面的例子中,我们使用 list.copy() 方法创建了主列表的副本,然后使用 del duplicated_listItem[start:end] 从复制的列表中删除了给定范围的子列表。然后我们使用copyed_listItem.extend(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("原始列表: ", listItem)
print("要更新的新列表为: ", new_list)
print("替换子列表后更新的列表: ",updated_list)

输出

原始列表: [1, 2, 3, 4, 5, 6]
要更新的新列表为: [7, 8, 9]
替换子列表后更新的列表: [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() 方法以及可以替换这些子列表的许多其他方法。每种方法都有其独特的解决问题的方法,您可以根据需要选择任何合适且简单的方法。


相关文章