Maison >développement back-end >Tutoriel Python >Pourquoi la « plage (début, fin) » de Python exclut-elle la valeur « fin » ?

Pourquoi la « plage (début, fin) » de Python exclut-elle la valeur « fin » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-02 22:00:17334parcourir

Why Does Python's `range(start, end)` Exclude the `end` Value?

Range(start, end) : Pourquoi l'exclusion de la valeur de fin ?

La fonction range(start, end) de Python est une fonction couramment utilitaire utilisé qui génère une séquence de nombres. Cependant, un aspect particulier de range() est qu'il exclut la valeur finale. Par exemple, range(1, 11) renvoie [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], s'arrêtant court à 11.

Pourquoi est-ce le cas ? La réponse réside dans l'utilisation large de range() et les pratiques courantes en programmation.

1. Uniformité dans l'indexation :

Les programmeurs préfèrent souvent l'indexation de base zéro, où le premier élément d'une séquence est référencé comme index 0. L'utilisation de range(0, 10) renverrait [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], contenant exactement 10 éléments, alignés sur sa longueur (len(range(0, 10))).

2. Boucle et itération :

Considérez une structure de boucle commune :

for i in range(len(li)):
    pass

Si range() incluait la valeur finale, cette boucle parcourrait un au-delà des indices valides de la liste li . Les programmeurs peuvent oublier de soustraire 1 de len(li) lors de la spécification de la plage, ce qui entraîne une boucle invalide.

3. Cohérence avec les itérateurs :

En Python, la fonction range() sert d'itérateur, produisant des valeurs une à la fois. S'il incluait la valeur finale, cela nécessiterait une vérification ou une logique supplémentaire pour terminer l'itération, ce qui ajouterait de la complexité et un potentiel d'erreurs.

Répondre au besoin d'inclusion :

Si vous avez fréquemment besoin d'inclure la valeur finale, vous pouvez créer une fonction personnalisée qui étend les fonctionnalités de range() :

def range1(start, end):
    return range(start, end + 1)

print(range1(1, 10))  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

En comprenant les raisons derrière l'exclusion de la valeur finale par range() et en utilisant des fonctions personnalisées lorsque cela est nécessaire, les programmeurs peuvent exploiter efficacement cet outil polyvalent dans leur code Python.

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