Python: append() vs extend() – How to Add One List to Another

Updated on May 6, 2026
Table of Contents
    The Solution

    To add the contents of one list to another in Python, use the `extend()` method for element-wise addition or `append()` to add the entire list as a single element.

    The Concept

    In Python, adding the contents of one list to another can be achieved using several methods, each with its own use case. The most common methods are extend() and append(). While extend() adds each element of the iterable to the list, append() adds the entire iterable as a single element. Understanding these differences is crucial for efficient list manipulation.

    Deep Technical Dive & Misconceptions

    When working with lists in Python, it's important to choose the right method for your specific needs. The extend() method is ideal when you want to add each element of a list or any iterable to another list. This method modifies the original list in place and is generally more efficient for adding multiple elements.

    On the other hand, append() adds the entire list as a single element. This is useful when you want to maintain the list structure within another list, effectively creating a nested list.

    A common misconception is that append() and extend() can be used interchangeably, but they serve different purposes. Using append() when you intend to merge lists will result in a list of lists, which may not be the desired outcome.

    Common Misconceptions

    • Misconception: append() and extend() are the same.
      Truth: append() adds a single element (the entire list), while extend() adds each element individually.
    • Misconception: Using extend() is always more memory efficient.
      Truth: While extend() is efficient for adding elements, using itertools.chain() can be more memory efficient for iterating over multiple lists without copying them.

    Code Examples

    # Using extend() to add elements of one list to another
    list1 = ["apple", "banana"]
    list2 = ["cherry", "date"]
    list1.extend(list2)
    print(list1)  # Output: ['apple', 'banana', 'cherry', 'date']
     
    # Using append() to add a list as a single element
    list1 = ["apple", "banana"]
    list2 = ["cherry", "date"]
    list1.append(list2)
    print(list1)  # Output: ['apple', 'banana', ['cherry', 'date']]
     
    # Using the + operator to concatenate lists
    list1 = ["apple", "banana"]
    list2 = ["cherry", "date"]
    list3 = list1 + list2
    print(list3)  # Output: ['apple', 'banana', 'cherry', 'date']
     
    # Using itertools.chain() for memory-efficient iteration
    import itertools
    list1 = ["apple", "banana"]
    list2 = ["cherry", "date"]
    for fruit in itertools.chain(list1, list2):
        print(fruit)
     
    # Adding elements of a tuple to a list using extend()
    list1 = ["apple", "banana"]
    tuple1 = ("cherry", "date")
    list1.extend(tuple1)
    print(list1)  # Output: ['apple', 'banana', 'cherry', 'date']
     

    Comparison Table

    Method Description Use Case
    extend() Adds each element of an iterable to the list. Merging lists or adding elements from any iterable.
    append() Adds the entire iterable as a single element. Creating a nested list structure.
    + Concatenates two lists. Quickly merging two lists into a new list.
    itertools.chain() Creates an iterator for iterating over multiple lists. Memory-efficient iteration over multiple lists.

    Frequently Asked Questions

    What is the difference between append() and extend() in Python?

    append() adds its argument as a single element to the end of a list, while extend() iterates over its argument and adds each element to the list.

    Can I use the + operator to add lists in Python?

    Yes, the + operator can be used to concatenate two lists, creating a new list with elements from both.

    Is it more memory-efficient to use itertools.chain()?

    Yes, itertools.chain() is more memory-efficient as it creates an iterator that can iterate over multiple lists without copying them.

    Can extend() be used with non-list iterables?

    Yes, extend() can be used with any iterable, such as tuples or sets, to add their elements to a list.

    What happens if I append a list to another list?

    Appending a list to another list adds the entire list as a single element, resulting in a nested list structure.

    Was this solution helpful?
    Report Broken Code or Error

    Help us improve. Paste the error you got or explain what went wrong.

    Thanks! We will review and fix this.

    Related Questions

    Comments & Discussions

    Log in or Sign up to join the discussion.