Python Tuple vs Python List


In Python, both tuples and lists are used to store collections of items. However, there are key differences between them in terms of mutability, performance, and usage.

Here’s a detailed comparison

Mutability

List- Mutable, meaning you can change its content (add, remove, or modify items) after its creation.

my_list = [1, 2, 3]

my_list[0] = 10  # my_list is now [10, 2, 3]
print(my_list)

my_list.append(4)  # my_list is now [10, 2, 3, 4]
print(my_list)

Tuple- Immutable, meaning once it’s created, you cannot change its content.

my_tuple = (1, 2, 3)
print(my_list)
# my_tuple[0] = 10  # This would raise a TypeError


Syntax

List- Created using square brackets [].

my_list = [1, 2, 3]
print(my_list)

Tuple- Created using parentheses ().

my_tuple = (1, 2, 3)
print(my_tuple)


Performance

List - Generally slower than tuples due to their mutable nature which requires additional memory for operations like appending.
Tuple - Faster and more memory-efficient than lists because they are immutable and thus can be optimized by the interpreter.


Use Cases

List - Suitable for collections of items that are likely to change, such as a list of tasks or items in a shopping cart.

tasks = ["task1", "task2", "task3"]
tasks.append("task4")
print(tasks)

Tuple - Suitable for fixed collections of items, such as coordinates, days of the week, or configuration constants.

coordinates = (10.0, 20.0)
print(coordinates)

days_of_week = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
print(days_of_week)


Methods

List - Provides a wide range of methods for modifying the content e.g., append(), remove(), extend(), pop(), clear(), sort(), reverse().

my_list = [1, 2, 3]

my_list.append(4)  # [1, 2, 3, 4]
print(my_list)

my_list.remove(2)  # [1, 3, 4]
print(my_list)

my_list.sort()  # [1, 3, 4]
print(my_list)

Tuple - Provides fewer methods, mainly for accessing and counting e.g., count(), index().

my_tuple = (1, 2, 3, 10)
print(my_tuple)

my_tuple.count(2)  # 2
print(my_tuple)

my_tuple.index(3)  # 10
print(my_tuple)


Conversion

You can convert between lists and tuples.

my_list = [1, 2, 3]
my_tuple = tuple(my_list)  # (1, 2, 3)
print(my_tuple)

my_tuple = (4, 5, 6)
my_list = list(my_tuple)  # [4, 5, 6]
print(my_list)

Example 

List - Useful when you need a collection that will change over time.

shopping_list = ["milk", "eggs", "bread"]

shopping_list.append("butter")
shopping_list.remove("eggs")

print(shopping_list)

Tuple - Useful for storing data that shouldn't change.

address = ("123 Main St", "Springfield", "IL", "62701")
print(address)


In Summary

    Lists - Mutable, slower, more memory, many methods, suitable for dynamic collections.
    Tuples - Immutable, faster, less memory, fewer methods, suitable for fixed collections.

Choosing between a list and a tuple depends on the specific needs of your program regarding mutability and performance.