Maison  >  Article  >  développement back-end  >  Affectation par tranches ou affectation directe : quand utiliser quelle approche ?

Affectation par tranches ou affectation directe : quand utiliser quelle approche ?

DDD
DDDoriginal
2024-10-19 08:12:02393parcourir

Slice Assignment vs. Direct Assignment: When to Use Which Approach?

Affectation par tranches ou affectation directe dans les listes

Bien que le découpage soit une opération courante pour extraire des éléments d'une liste, son utilisation dans les affectations peut être déroutant. Comparons la différence entre l'affectation de tranche et l'affectation directe.

Affectation directe

a_list = ['foo', 'bar']

Cela attribue une nouvelle liste au nom a_list. La valeur d'origine stockée dans a_list est supprimée et la nouvelle liste devient le seul objet référencé par a_list.

Assignation de tranche

a_list[:] = ['foo', 'bar']

En revanche, l'affectation de tranche fonctionne différemment. Il appelle la méthode __setitem__ sur l'objet a_list, en utilisant une tranche comme index et une nouvelle liste comme valeur.

Différences clés

  • Modification d'objet : L'affectation de tranche modifie l'objet existant pointé par a_list. L'affectation directe crée un nouvel objet et l'attribue à a_list.
  • __setitem__ Prise en charge : a_list doit prendre en charge __setitem__ avec un index de tranche pour que l'affectation de tranche fonctionne.
  • Valeur itérable : L'objet sur le côté droit de l'affectation doit être itérable pour l'affectation de tranche.
  • Destruction de référence : Aucun nom n'est pointé sur l'objet de droite dans l'affectation de tranche . S'il s'agit d'un littéral, il sera supprimé après l'affectation.

Applications supplémentaires

Au-delà du découpage de la liste entière, l'affectation de tranches permet des manipulations avancées telles que :

  • Suppression d'éléments de liste : a_list[:] = []
  • Insertion de valeurs au milieu de la liste : a_list[1:1] = [1, 2, 3]

Cependant, pour les tranches étendues (avec un pas différent de un), l'itérable de droite doit avoir la bonne longueur pour correspondre à la tranche.

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