Home
Map
List Copy, Slice Entire ListCopy lists with the slice syntax and the extend method. Benchmark list copying approaches.
Python
This page was last reviewed on Oct 22, 2021.
Copy list. A list references a region of memory. When assigned, the list reference itself is copied. In Python we can instead copy elements into a new list.
String List
Syntax notes. We sometimes need instead to copy all the elements of a list into a new list. The new list then can be independently modified.
Slice example. We use the slice syntax to copy a list. When the start and end numbers are omitted, we consider the slice to equal the entire list.
Slice
Tip This is the shortest syntax form. It requires only a list reference and 3 characters.
# A list: list1 = [10, 20, 30] # Copy list1 with slice syntax. list2 = list1[:] # Modify list2. list2[0] = 0 print(list1) print(list2)
[10, 20, 30] [0, 20, 30]
Extend. Next, we use the extend method to copy a list. We first need to allocate a new, empty list. Then we extend that empty list (list2) with the original list.
Note This approach requires two lines. It is also less efficient. Please see the benchmark section.
list1 = [10, 20, 30] # Create empty list, then extend it. list2 = [] list2.extend(list1) # The lists are separate. list2[0] = 0 print(list1) print(list2)
[10, 20, 30] [0, 20, 30]
Performance. Here we consider performance of list copying. The list contains five numbers. We use while-loops to repeatedly copy those five elements.
while
Version 1 This Python code tests the slice syntax. An entire list is copied with by using an unspecified start and end.
Version 2 This code uses the extend method (after creating an empty list). We repeat these operations ten million times.
Result Taking a slice to copy a list is faster. It required just 4.7 seconds, versus 5.3 for the extend method version.
import time list1 = [100, 200, 300, 400, 500] print(time.time()) # Version 1: slice i = 0 while < 10000000: list2 = list1[:] i += 1 print(time.time()) # Version 2: extend i = 0 while i < 10000000: list2 = [] list2.extend(list1) i += 1 print(time.time())
1395252155.968703 1395252160.704971 Slice = 4.736 s 1395252166.045275 Extend = 5.340 s
Summary. A full-list slice is a good way to copy a list. It requires the least amount of syntax. And it performs faster than the alternative approach that uses the extend method.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Oct 22, 2021 (image).
Home
Changes
© 2007-2024 Sam Allen.