Difference Between List and Tuple in Python

Both List and Tuple share several characteristics and benefits; however, they also have notable differences and unique attributes that influence their applications, including mutability, performance, and memory consumption. Lists are mutable, allowing for the addition, removal, or alteration of elements.

Tuples are characterized by their immutability, which prevents any alterations or modifications. The selection of the suitable data type among them hinges on our requirements, specifically whether we intend to change the data or emphasize performance and memory efficiency.

What is a List?

In Python, a List serves as an ordered and mutable collection of items. It enables us to execute a range of modifications, including adding, deleting, or altering elements.

Characteristics of Lists:

Here are some of the important features of Python lists:

  • Ordered: In this, A List maintains a particular order of its elements with an index starting from 0.
  • Mutable: In the Mutable data type, we can edit or make changes to the elements.
  • Dynamic: The List can grow or shrink in size dynamically.
  • Supports Multiple Data Types: A list can contain elements of various and distinct data types.
  • The List uses square brackets () for declaration.
  • Python List Example

Consider an example of how to generate a list in Python.

Example

Example

# creating a list

tst_lst = [19, 23, 10, "logicpractice", 7.8]

# printing the list

print("Initialized list:", tst_lst)

print("Data Type:", type(tst_lst))

Output:

Output

Initialized list: [19, 23, 10, 'logicpractice', 7.8]

Data Type: <class 'list'>

Explanation:

In the example provided, a list has been constructed using square brackets and subsequently displayed. It is evident that the initialized list contains various data types, including integer, string, and float.

What is a Tuple?

A tuple is a collection of elements that is both ordered and immutable, indicating that once it is created, its elements cannot be altered.

Characteristics of Tuples:

Here are some of the features included in Python Tuples:

  • Ordered: Like lists, in a Tuple, elements have a specific order and can be accessed via an index.
  • Immutable: In the Immutable data type, we cannot edit or make changes to the elements.
  • Faster than lists: Since tuples are immutable, Python optimizes their storage and processing.
  • Supports Multiple Data Types: A tuple can consist of elements of different types.
  • Tuples use parentheses () for declaration.
  • Python Tuple Example

Let’s examine an illustration for constructing a tuple in Python.

Example

Example

# creating a tuple

tst_tpl = (19, 23, 10, "logicpractice", 7.8)

# printing the tuple

print("Initialized Tuple:", tst_tpl)

print("Data Type:", type(tst_tpl))

Output:

Output

Initialized Tuple: (19, 23, 10, 'logicpractice', 7.8)

Data Type: <class 'tuple'>

Explanation:

In the preceding example, a list has been generated utilizing parentheses and subsequently displayed. It can be noted that the initialized tuple contains various data types, including integer, string, and float. The output reflects the data, which is the tuple.

Key Differences between Lists and Tuples

The following are key differences between Lists and Tuples in Python :

Feature List Tuple
Mutability We can modify a list by adding or removing items (Mutable). We cannot modify a tuple by adding or removing items (Immutable).
Performance Lists are slower due to mutability. Tuples are faster due to their static size and immutability.
Memory Usage List uses more memory. Tuple uses less memory.
Methods Python List offers more built-in methods. (e.g., append, extend, remove) Python Tuple offers fewer built-in methods. (e.g., index, count)
Syntax We can define a list using square brackets []. We can define a tuple using parentheses ().
Iteration Speed Iteration is slightly slower in Lists due to their dynamic nature. Iteration is faster in Tuples as they are immutable.
Storage Efficiency Lists require extra memory for dynamic allocation. Tuples are more memory-efficient
Error Safety Lists are prone to accidental changes. Tuples provide data integrity to prevent errors.
Use Case Lists are used when data needs to change. Tuples are used when data should remain constant.
Example sample_list = [12, 1, 5, 8, 4] sample_tuple = (12, 1, 5, 8, 4)

Mutability Test: Lists vs Tuples

The primary distinction between a List and a Tuple lies in their mutability. A list is classified as a mutable data type, indicating that its elements can be modified, appended, or deleted after it has been created.

Conversely, a Tuple is a data type that is immutable, meaning it cannot be altered once it has been initialized. Any effort to modify an element will lead to an error.

Example

Example

# Modifying a list

tst_lst = [14, 23, 39]

print("Given List:", tst_lst)

tst_lst[0] = 17

print("Modified List:", tst_lst)

print()

# Modifying a tuple (Raises an error)

tst_tpl = (14, 23, 39)

print("Given Tuple:", tst_tpl)

tst_tpl[0] = 17  # TypeError: 'tuple' object does not support item assignment

Output:

Output

Given List: [14, 23, 39]

Modified List: [17, 23, 39]

Given Tuple: (14, 23, 39)

---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<file-name> n <cell line: 0>()

      9 tst_tpl = (14, 23, 39)

     10 print("Given Tuple:", tst_tpl)

---> 11 tst_tpl[0] = 17  # TypeError: 'tuple' object does not support item assignment

TypeError: 'tuple' object does not support item assignment

Explanation:

In the preceding illustration, a list was created, and indexing was employed to alter one of its elements. Consequently, the list was successfully updated. In contrast, with tuples, although we initialized one, an error is encountered when we attempt to modify it.

Performance and Memory Comparison: Lists vs Tuples

Tuples typically utilize memory more efficiently and operate more swiftly compared to lists. This can be attributed to:

  • Lists necessitate extra memory allocation for dynamic adjustments.
  • The storage of tuples is more optimized owing to their immutable nature.
  • Example

    Example
    
    import sys
    
    tst_lst = [19, 24, 3, 54, 25]
    
    tst_tpl = (19, 24, 3, 54, 25)
    
    print(sys.getsizeof(tst_lst))  # More memory usage
    
    print(sys.getsizeof(tst_tpl))  # Less memory usage
    

Output:

Output

104

80

Explanation:

In the aforementioned example, the sys module has been imported, and both a list and a tuple have been initialized. Subsequently, the getsizeof function was utilized to determine the memory size of the list and the tuple. Consequently, it can be noted that the list occupies more memory compared to the tuple.

When to Use Lists?

A list is suitable for situations where data requires dynamic modifications, such as the addition or removal of elements. It is effective when a sequence with adaptable operations is necessary. Lists can be utilized when handling extensive datasets that necessitate periodic updates.

When to Use Tuples?

Tuples are utilized when it is essential for data to remain immutable (for instance, in database records or configuration settings). They are particularly advantageous in scenarios where performance is a key consideration, as tuples offer improved speed and reduced memory usage. Additionally, tuples can serve as keys in dictionaries, given that they are hashable, unlike lists.

Conclusion

We have explored extensively the distinctions between lists and tuples. A list is a sequential, changeable collection of items. It enables us to carry out several alterations, such as inserting, deleting, or modifying elements. In contrast, a tuple is a sequential yet unchangeable collection of items, indicating that once it is formed, its elements cannot be altered.

We also explored the distinctions between Lists and tuples through a table, which effectively assisted us in briefly summarizing the differences.

Python Lists vs Tuples - FAQs

1. Why are tuples faster than lists?

Tuples exhibit greater speed than lists due to their immutable nature, enabling Python to enhance their storage and processing capabilities. Because tuples do not need dynamic resizing, their operational efficiency is relatively higher.

2. Can we convert a list to a tuple and vice versa?

Indeed, the tuple function can be utilized to transform a list into a tuple, while the list function serves to change a tuple into a list.

Example:

Let us take a look at an example:

Example

# initializing a list

org_lst = [19, 24, 31]

print("Original List:", org_lst)

# converting the list to a tuple

tst_tpl = tuple(org_lst)

print("\nList -> Tuple\nNew Tuple:", tst_tpl)

# converting the tuple to a list

nw_lst = list(tst_tpl)

print("\nTuple -> List\nNew List:", nw_lst)

Output:

Output

Original List: [19, 24, 31]

List -> Tuple

New Tuple: (19, 24, 31)

Tuple -> List

New List: [19, 24, 31]

Explanation:

In the preceding illustration, a list was created and subsequently transformed into a tuple using the tuple function. Following that, the list function was employed to revert the tuple back into a list.

3. Can a tuple contain a list?

Indeed, a tuple can include a list as one of its elements. Although the tuple is immutable in nature, the list contained within it remains modifiable.

Example:

Example

# intializing a tuple containing a list

tst_tpl = (15, 23, [39, 14])

tst_tpl[2].append(5)

print(tst_tpl)

Output:

Output

(15, 23, [39, 14, 5])

Explanation:

In the preceding example, a tuple containing a list was formed. We subsequently employed indexing to alter the contents of the inner list. Consequently, we have effectively updated the list. Therefore, it can be inferred that a list contained within a tuple is subject to modification.

4. Can a tuple be used as a dictionary key?

Indeed, tuples can serve as keys in dictionaries due to their immutable and hashable nature. Nonetheless, if a tuple includes a mutable component (such as a list), it cannot function as a key in a dictionary.

Example:

Example

my_dict = {(1, 2): "Tuple as a Dictionary Key"}

print(my_dict[(1, 2)])

Output:

Output

Tuple as a Dictionary Key

5. When should we use a tuple over a list?

A tuple is ideal for scenarios where the data must stay constant, like in configuration settings, database entries, or static groups of items. Conversely, a list is more appropriate when flexibility and regular updates are required.

Input Required

This code uses input(). Please provide values below: