Home > Backend Development > Python Tutorial > Why Does List Multiplication Create Shared Sublists in Python?

Why Does List Multiplication Create Shared Sublists in Python?

Mary-Kate Olsen
Release: 2024-12-23 12:55:10
Original
990 people have browsed it

Why Does List Multiplication Create Shared Sublists in Python?

Unexpected Changes in Lists of Lists

When creating a list of lists using list multiplication, be cautious of unexpected changes.

Problem Description

Creating a list of lists with a simple list multiplication, like:

xs = [[1] * 4] * 3
Copy after login

may lead to inesperado consequences. Changing a value within one sublist affects all sublists:

xs[0][0] = 5
print(xs)
# [[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]
Copy after login

Explanation

The multiplication operator operates on objects, not expressions. Thus, [[1] * 4] * 3 only sees the evaluated sublist [1, 1, 1, 1] three times. Instead of creating new sublists, creates references to the existing one.

Solution

To avoid this behavior and ensure independent sublists, use a list comprehension:

xs = [[1] * 4 for _ in range(3)]
Copy after login

This expression reevaluates [1] * 4 for each iteration, resulting in distinct sublists.

Deeper Understanding: Immutable Integers

It's important to note that integers in Python are immutable. This means operations like:

1.value = 2
Copy after login

are invalid, as integers have no modifiable value attribute. Therefore, despite [1] * 4 not copying the integers themselves, it doesn't matter because integers cannot be modified.

The above is the detailed content of Why Does List Multiplication Create Shared Sublists in Python?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template