Maison >développement back-end >Tutoriel Python >Comment puis-je initialiser efficacement un tableau 2D en Python ?

Comment puis-je initialiser efficacement un tableau 2D en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-04 17:35:12955parcourir

How Can I Efficiently Initialize a 2D Array in Python?

Initialisation d'un tableau bidimensionnel en Python

Lorsque vous travaillez avec Python, vous pouvez rencontrer le besoin d'initialiser un tableau bidimensionnel, ou une "liste de listes". Bien que l'extrait de code fourni utilisant des boucles imbriquées accomplisse la tâche, ce n'est peut-être pas l'approche la plus efficace.

Initialisation simplifiée

Une manière plus concise d'initialiser un double un tableau dimensionnel passe par la compréhension de liste :

t = [[0] * 3 for i in range(3)]

Ce code initialise un tableau 3x3 avec tous les éléments définis sur 0.

Une mise en garde

Bien que cela puisse sembler pratique, l'utilisation de [[v] * n] * n pour initialiser un tableau peut entraîner un comportement inattendu. Comme démontré dans le code ci-dessous, cette approche crée des copies de la même référence de liste, ce qui entraîne le partage des références dans tout le tableau :

a = [[0] * 3] * 3
a[0][0] = 1
print(a)  # Output: [[1, 1, 1], [1, 1, 1], [1, 1, 1]]

Contrairement à prévu, tous les éléments du tableau deviennent 1. En effet, chaque élément du tableau devient 1. la sous-liste contient une référence à la liste d'origine, et toute modification d'un élément affecte l'ensemble du tableau.

En résumé, pour initialiser des tableaux bidimensionnels en Python, utilisez la compréhension de liste pour plus de simplicité et évitez en utilisant [[v] * n] * n en raison de problèmes de partage de références.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn