📜  Python|克隆或复制列表

📅  最后修改于: 2022-05-13 01:54:24.069000             🧑  作者: Mango

Python|克隆或复制列表

在本文中,我们将介绍在Python中复制或克隆列表的各种方法。这些不同的复制方式需要不同的执行时间,所以我们可以在时间的基础上进行比较。

1.使用切片技术
这是克隆列表的最简单、最快的方法。当我们要修改列表并保留原始副本时会考虑使用此方法。在此我们制作列表本身的副本以及引用。此过程也称为克隆。该技术大约需要 0.039 秒,是最快的技术。

Python3
# Python program to copy or clone a list
# Using the Slice Operator
def Cloning(li1):
    li_copy = li1[:]
    return li_copy
   
# Driver Code
li1 = [4, 8, 2, 10, 15, 18]
li2 = Cloning(li1)
print("Original List:", li1)
print("After Cloning:", li2)


Python3
# Python code to clone or copy a list
# Using the in-built function extend()
def Cloning(li1):
    li_copy = []
    li_copy.extend(li1)
    return li_copy
   
# Driver Code
li1 = [4, 8, 2, 10, 15, 18]
li2 = Cloning(li1)
print("Original List:", li1)
print("After Cloning:", li2)


Python3
# Python code to clone or copy a list
# Using the in-built function list()
def Cloning(li1):
    li_copy = list(li1)
    return li_copy
   
# Driver Code
li1 = [4, 8, 2, 10, 15, 18]
li2 = Cloning(li1)
print("Original List:", li1)
print("After Cloning:", li2)


Python3
# Python code to clone or copy a list
# Using list comprehension
def Cloning(li1):
    li_copy = [i for i in li1]
    return li_copy
   
# Driver Code
li1 = [4, 8, 2, 10, 15, 18]
li2 = Cloning(li1)
print("Original List:", li1)
print("After Cloning:", li2)


Python3
# Python code to clone or copy a list
# Using append()
def Cloning(li1):
    li_copy =[]
    for item in li1: li_copy.append(item)
    return li_copy
   
# Driver Code
li1 = [4, 8, 2, 10, 15, 18]
li2 = Cloning(li1)
print("Original List:", li1)
print("After Cloning:", li2)


Python3
# Python code to clone or copy a list
# Using bilt-in method copy()
def Cloning(li1):
    li_copy =[]
    li_copy = li1.copy()
    return li_copy
   
# Driver Code
li1 = [4, 8, 2, 10, 15, 18]
li2 = Cloning(li1)
print("Original List:", li1)
print("After Cloning:", li2)


输出:

Original List: [4, 8, 2, 10, 15, 18] 
After Cloning: [4, 8, 2, 10, 15, 18] 

2.使用extend()方法
可以使用 extend()函数将列表复制到新列表中。这会将可迭代对象(例如,另一个列表)的每个元素附加到新列表的末尾。这需要大约 0.053 秒才能完成。

例子:

Python3

# Python code to clone or copy a list
# Using the in-built function extend()
def Cloning(li1):
    li_copy = []
    li_copy.extend(li1)
    return li_copy
   
# Driver Code
li1 = [4, 8, 2, 10, 15, 18]
li2 = Cloning(li1)
print("Original List:", li1)
print("After Cloning:", li2)

输出:

Original List: [4, 8, 2, 10, 15, 18]
After Cloning: [4, 8, 2, 10, 15, 18]

3. 使用 list() 方法
这是使用内置函数list() 克隆列表的最简单方法。这需要大约 0.075 秒才能完成。

例子:

Python3

# Python code to clone or copy a list
# Using the in-built function list()
def Cloning(li1):
    li_copy = list(li1)
    return li_copy
   
# Driver Code
li1 = [4, 8, 2, 10, 15, 18]
li2 = Cloning(li1)
print("Original List:", li1)
print("After Cloning:", li2)

输出:

Original List: [4, 8, 2, 10, 15, 18]
After Cloning: [4, 8, 2, 10, 15, 18]

4.使用浅拷贝的方法
这种使用 copy.copy 进行复制的方法在文章 Shallow Copy 中有很好的解释。这需要大约 0.186 秒才能完成。

5. 使用列表推导
列表推导的方法可用于将所有元素从一个列表单独复制到另一个列表。这需要大约 0.217 秒才能完成。

Python3

# Python code to clone or copy a list
# Using list comprehension
def Cloning(li1):
    li_copy = [i for i in li1]
    return li_copy
   
# Driver Code
li1 = [4, 8, 2, 10, 15, 18]
li2 = Cloning(li1)
print("Original List:", li1)
print("After Cloning:", li2)

输出:

Original List: [4, 8, 2, 10, 15, 18]
After Cloning: [4, 8, 2, 10, 15, 18]

6. 使用 append() 方法
这可用于将元素追加和添加到列表或将它们复制到新列表。它用于将元素添加到列表的最后一个位置。这需要大约 0.325 秒才能完成,是最慢的克隆方法。

Python3

# Python code to clone or copy a list
# Using append()
def Cloning(li1):
    li_copy =[]
    for item in li1: li_copy.append(item)
    return li_copy
   
# Driver Code
li1 = [4, 8, 2, 10, 15, 18]
li2 = Cloning(li1)
print("Original List:", li1)
print("After Cloning:", li2)

输出:

Original List: [4, 8, 2, 10, 15, 18]
After Cloning: [4, 8, 2, 10, 15, 18]

7. 使用 copy() 方法
内置方法 copy 用于将所有元素从一个列表复制到另一个列表。这需要大约 1.488 秒才能完成。

例子:

Python3

# Python code to clone or copy a list
# Using bilt-in method copy()
def Cloning(li1):
    li_copy =[]
    li_copy = li1.copy()
    return li_copy
   
# Driver Code
li1 = [4, 8, 2, 10, 15, 18]
li2 = Cloning(li1)
print("Original List:", li1)
print("After Cloning:", li2)

输出:

Original List: [4, 8, 2, 10, 15, 18]
After Cloning: [4, 8, 2, 10, 15, 18]

8.使用Deep Copy的方法
这种复制方法在文章 Deep Copy 中有很好的解释。这需要大约 10.59 秒才能完成,并且是最慢的克隆方法。

参考堆栈溢出。