Python 编程:克隆或复制列表

我希望您一定熟悉 Python,这是最流行的语言之一。Python 是一种高级且面向对象的编程语言。在本文中,我们将讨论如何在 Python 中复制或克隆列表。

AI吧Python

什么是列表?

列表是 Python 中的序列数据类型。列表是可变的,这意味着可以在列表中修改值。列表用于将多个项目保存在一起。与 C++ 不同,列表也可能包含异构元素。通过异构,我们的意思是单个列表可以包含不同数据类型的值。

下面讨论一些常见的列表方法:

  • len():为了确定列表可能包含的项目数,我们可以使用 len() 函数:
  1. 句法: len(myList)
  2. 参数:myList:一个 Python 列表
  3. 返回类型:返回字符串的长度
  • append():此函数用于将一个元素附加到列表的末尾。
  1. 语法myList.append(myElement)
  2. 参数: myElement:要添加到列表末尾的元素。
  • clear():此函数用于清除列表中的所有元素。
  1. 句法: myList.clear()
  • count():此方法与列表一起使用时确定特定元素的出现次数。
  1. 句法: myList.count(myElement)
  2. 参数: myElement:表示要确定出现次数的元素。
  3. 返回类型:返回 myList 中 myElement 的出现次数。

如何在 Python 中复制列表?

Python 为我们提供了多种在 Python 中复制或克隆列表的方法。尽管这些方法由于复杂性不同而用于完成相同的任务,但执行时间不同。也就是说,与其他方法相比,某些方法花费的时间更少。下面详细讨论这些方法:

  1. 使用 Slice 运算符:这是在 Python 中复制列表的最简单、最快的方法。当程序员想要修改列表但同时想要维护列表的原始副本时,此方法非常有用。在此方法中,会生成列表的副本,并维护对列表的引用。这种通过切片技术复制列表的过程也称为克隆。
    1. 执行时间:此方法的执行时间约为 0.3 秒。
  2. 使用内置 list() 方法: Python 为我们提供了一个内置 list() 方法,使用它我们可以轻松复制列表。这是复制列表的最简单方法,因为我们只需要调用内置函数即可。此函数具有以下语法:
    1. 句法: list(iterable)
    2. 参数: iterable:一个对象,可以是集合、字符串、列表等元素的集合。
    3. 返回类型:包含可迭代对象的列表。
    4. 执行时间:此方法的执行时间约为 0.075 秒。
  1. 使用内置的 extend() 方法:内置的 extend() 函数可用于将列表复制到另一个列表中。该函数的语法如下:
    1. 句法: myList.extend(iterable)
    2. 参数: iterable:一个对象,可以是集合、字符串、列表等元素的集合。
    3. 返回类型:通过从 myList 末尾的 iterable 复制元素来修改 myList。
    4. 执行时间:此方法的执行时间约为 0.054 秒。
  2. 使用列表推导方法:列表推导方法用于将元素从一个列表单独复制到另一个列表。当我们想在现有列表的基础上创建一个新列表时,列表推导为我们提供了最简单、最短的方法。
    1. 执行时间:此方法的执行时间约为 0.217 秒。
  3. 使用列表 append() 方法:在 Python 中,我们可以使用内置的 append() 函数将元素追加到列表的末尾。此函数具有以下语法:
    1. 句法: myList.append(element)这里,元素是必须附加在列表末尾的元素。
    2. 执行时间:此方法的执行时间约为 0.325 秒。因此,我们可以使用 for-in 循环遍历原始列表,并将列表中的每个元素一个一个地追加到另一个列表中。
  4. 使用 copy() 方法: Python 为我们提供了内置的 copy() 方法,我们可以使用该方法将所有元素从一个列表复制到另一个列表。
    1. 执行时间:该方法的执行时间约为 1.488 秒。
  5. 使用深拷贝方法:在深拷贝方法中,复制的过程是递归进行的。首先,基于原始列表构造对象集合,然后将子对象复制并呈现在原始列表中。在此方法中,将对象的副本复制到其他对象。对副本所做的任何更改都不会反映回原始列表。
  1. 使用浅拷贝方法:在浅拷贝方法中,构造一个新的集合对象,然后用对子对象的引用填充它。因此,在复制过程中不涉及递归,因此不会制作子对象的副本。在这个过程中,一个对象的引用被复制到另一个对象。与深度复制方法相比,对复制对象所做的任何更改都会反映回原始对象。

    1. 示例:我们现在将演示上面讨论的各种方法:
    2. 源代码: Python 程序,用于演示在 Python 中复制或克隆列表的各种方法
Importing library

import copy                               # Statement 1

Function to copy a list using

the slice (:) operator

def copyListFunction1(myList):            # Statement 2
copiedList = myList[:]                # Statement 3
return copiedList                     # Statement 4

Function to copy a list using

the inbuilt list() function

def copyListFunction2(myList):            # Statement 5
copiedList = list(myList)             # Statement 6
return copiedList                     # Statement 7

Function to copy a list using

the inbuilt extend() function

def copyListFunction3(myList):            # Statement 8
copiedList = []                       # Statement 9
copiedList.extend(myList)             # Statement 10
return copiedList                     # Statement 11

Function to copy a list using

list comprehension technique

def copyListFunction4(myList):                          # Statement 12
copiedList = [element for element in myList]        # Statement 13
return copiedList                                   # Statement 14

Function to copy a list using

the inbuilt append function

def copyListFunction5(myList):                          # Statement 15
copiedList = []                                     # Statement 16
for element in myList:                              # Statement 17
copiedList.append(element)                      # Statement 18return copiedList                                   # Statement 19

Python program to copy a list

using the inbuilt copy() method

def copyListFunction6(myList):                          # Statement 20
copiedList = myList.copy()                          # Statement 21
return copiedList                                   # Statement 22

Python program to copy a list

using the deep copy method

def copyListFunction7(myList):                          # Statement 23
copiedList = copy.deepcopy(myList)                  # Statement 24
return copiedList                                   # Statement 25

Python program to copy a list

using the shallow copy() method

def copyListFunction8(myList):                          # Statement 26
copiedList = copy.copy(myList)                      # Statement 27
return copiedList                                   # Statement 28

Menu Driver Code

originalList = [2, 4, 8, 12, 14, 16]                    # Statement 29
copiedList1 = copyListFunction1(originalList)           # Statement 30
copiedList2 = copyListFunction2(originalList)           # Statement 31
copiedList3 = copyListFunction3(originalList)           # Statement 32
copiedList4 = copyListFunction4(originalList)           # Statement 33
copiedList5 = copyListFunction5(originalList)           # Statement 34
copiedList6 = copyListFunction6(originalList)           # Statement 35
copiedList7 = copyListFunction7(originalList)           # Statement 36
copiedList8 = copyListFunction8(originalList)           # Statement 37

print("Original List:", originalList)                   # Statement 38
print("Copied list 1:", copiedList1)                    # Statement 39
print("Copied list 2:", copiedList2)                    # Statement 40
print("Copied list 3:", copiedList3)                    # Statement 41
print("Copied list 4:", copiedList4)                    # Statement 42
print("Copied list 5:", copiedList5)                    # Statement 43
print("Copied list 6:", copiedList6)                    # Statement 44
print("Copied list 7:", copiedList7)                    # Statement 45
print("Copied list 8:", copiedList8)                    # Statement 46

输出

节目说明:

  • 在节目中;语句2、语句5、语句8、语句12、语句15、语句20、语句23和语句28分别对应copyListFunction1、copyListFunction2、copyListFunction3、copyListFunction4、copyListFunction5、copyListFunction6、copyListFunction7和copyListFunction8函数。
  • 每个函数都用于演示上述方法的工作原理。
  • 复制列表函数1:
    • 在这个函数中,我们演示了如何使用切片运算符方法克隆或复制列表。
    • 此函数接受原始列表作为参数 myList。在这个函数中,我们声明了一个列表,copyList。
    • 使用切片运算符,我们将 myList 复制到copyedList。
    • 最终,该函数返回copyList。
  • 复制列表函数2
    • 在此函数中,我们演示了如何使用 list() 函数克隆或复制列表。
    • 此函数还接受原始列表作为参数 myList。在这个函数中,我们声明了一个列表,copyList。
    • 我们通过传递 myList 作为参数来调用内置的 list() 函数,结果已存储在copyedList 中。
    • 最终,该函数返回copyList。
  • 复制列表函数3:
    • 在此函数中,我们演示了如何使用 extend() 函数克隆或复制列表。
    • 此函数还接受原始列表作为参数 myList。
    • 在这个函数中,我们创建了一个空列表,copyList。
    • 我们通过将 myList 作为参数传递来在copyedList 上调用内置的extend() 函数。
    • 现在,copyedList 是复制或克隆的列表。
    • 最终,该函数返回copyList。
  • 复制列表函数4:
    • 在此函数中,我们演示了如何使用 extend() 函数克隆或复制列表。
    • 此函数还接受原始列表作为参数 myList。
    • 在这个函数中,我们创建了一个空列表,copyList。
    • 我们通过将 myList 作为参数传递来在copyedList 上调用内置的extend() 函数。
    • 现在,copyedList 是复制或克隆的列表。
    • 最终,该函数返回copyList。
  • 复制列表函数5:
    • 在这个函数中,我们演示了如何借助内置的 append() 函数克隆或复制列表。
    • 此函数还接受原始列表作为参数 myList。
    • 在这个函数中,我们创建了一个空列表,copyList。
    • 现在我们使用 for-in 循环对 myList 进行迭代,并且在迭代的每一步中,我们通过将列表的当前元素作为参数传递来在copyedList 上调用内置的append() 函数。
    • 现在,copyedList 是复制或克隆的列表。
    • 最终,该函数返回copyList。
  • 复制列表函数6:
    • 在此函数中,我们演示了如何使用内置的 copy() 函数克隆或复制列表。
    • 此函数还接受原始列表作为参数 myList。
    • 在这个函数中,我们声明了一个列表,copyList。
    • 我们在 myList 上调用内置的 copy() 函数,结果是已存储在copyedList 中的复制列表。
    • 现在,copyedList 是复制或克隆的列表。最终,该函数返回copyList。
  • 复制列表函数7:
    • 在这个函数中,我们演示了如何使用深拷贝方法克隆或复制列表。
    • 此函数还接受原始列表作为参数 myList。
    • 在这个函数中,我们声明了一个列表,copyList。
    • 我们通过将 myList 作为参数传递来调用 copy.deepcopy() 函数,结果已存储在copyedList 中。
    • 现在,copyedList 是复制或克隆的列表。最终,该函数返回copyList。
  • 复制列表函数8:
    • 在这个函数中,我们演示了如何使用浅拷贝方法克隆或复制列表。
    • 此函数还接受原始列表作为参数 myList。
    • 在这个函数中,我们声明了一个列表,copyList。
    • 我们通过将 myList 作为参数传递来调用 copy.copy() 函数,结果已存储在copyedList 中。
    • 现在copyedList 是复制或克隆的列表。
    • 最终,该函数返回copyList。
  • 在菜单驱动程序代码中,我们初始化了一个整数列表 originalList。然后,我们通过传递 originalList 作为参数调用了上面讨论的所有八个函数。为了存储结果,我们声明了八个列表:copyedList1、copyedList2、copyedList3、copyedList4、copyedList5、copyedList6、copyedList7 和copyedList8。
  • 最终,在语句 38 中,我们将原始列表打印到控制台,从 39 到 46,我们打印了通过各种方法获得的复制列表。

摘要:首先,我们从了解 Python 中列表的基础知识开始。然后,我们了解了在 Python 中克隆或复制列表的各种方法。然后,我们看到了如何在实践中使用这些方法。我们也对整个程序有了深入的了解。

恭喜!你在理解 Python 中的列表方面又向前迈进了一步。我希望你喜欢学习这些方法,它肯定会帮助你成为一名优秀的程序员。

发表评论

邮箱地址不会被公开。 必填项已用*标注