[PYTHON] Différences de comportement de chaque langage LL lorsque l'index de la liste est ignoré

C'est une histoire de "c'est pourquoi", mais j'ai trouvé intéressant que le comportement soit différent dans chaque langue.

JavaScript

var arr = [];
arr[100] = 'foo';
console.log(arr.length); //=> 101
console.log(arr[0]); //=> undefined
console.log(arr[101]); //=> undefined

Les index non définis renvoient «non définis».

Déclarer "" use strict ";` ne change pas le résultat de l'exécution.

Perl

my @arr;
$arr[100] = 'foo';
print $#arr; #=> 100
print defined $arr[0] ? 1 : 0; #=> 0
print defined $arr[101] ? 1 : 0; #=> 0

Comme JavaScript, les index non définis semblent être ʻundef`.

Déclarer ʻuse strict; `ne change pas le résultat de l'exécution.

Ruby

arr = []
arr[100] = 'foo'
p arr.size #=> 101
p arr[0] #=> nil
p arr[101] #=> nil

C'est presque la même chose que JavaScript / Perl, mais cela devient «nil». Probablement parce qu'il n'y a pas d'équivalent de «non défini».

PHP

$arr = array();
$arr[100] = 'foo';
echo count($arr); //=> 1
echo is_null($arr[0]); //=> 1
echo is_null($arr[101]); //=> 1

L'index non défini sera «null».

La longueur du tableau est 1, ce qui est différent des autres langues. Cela semble être le cas en PHP car à la fois la liste et le hachage (dictionnaire) sont des «tableaux».

[Une addition]

L'accès à un index non défini entraînera une erreur de niveau ʻE_NOTICE`. (Voir les commentaires pour plus de détails)

error_reporting(E_ALL); // E_Régler sur la sortie AVIS

$arr = array();
$arr[100] = 'foo';
echo $arr[0]; //=> Notice: Undefined offset: 0

Python

arr = []
arr[100] = 'foo' #=> IndexError: list assignment index out of range

Tenter de référencer / affecter un index qui n'existe pas entraîne ʻIndexError`. Je pense que c'est le comportement le plus simple.

Recommended Posts

Différences de comportement de chaque langage LL lorsque l'index de la liste est ignoré
L'histoire selon laquelle le comportement d'héritage est assez différent dans chaque langue
Comportement dans chaque langue lorsque les collouts sont réutilisés avec for
Obtenez le nombre d'occurrences pour chaque élément de la liste
Obtenez l'index de chaque élément de la matrice de confusion en Python
Comportement lors du retour dans le bloc with
[GO language] Organisez le comportement de l'importation dans des endroits autres que GOPATH
Lorsque la cible est Ubuntu 16.04 dans Ansible
Liste des codes de langue utilisés dans Twitter (y compris l'API) (avec dictionnaire Python). Quelle est la langue la plus couramment utilisée?
[pandas] Lors de la spécification de l'étiquette d'index par défaut dans la méthode at, "" n'est pas requis
En Python, changez le comportement de la méthode en fonction de la façon dont elle est appelée
[Pour les débutants] Comportement inattendu si "\" est inclus lors de la définition du chemin en Python
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Faites correspondre la distribution de chaque groupe en Python
Copiez la liste en Python
Comportement lorsque Container Trainable = False dans Keras
Rechercher par la valeur de l'instance dans la liste
[Solution] Lorsque "0001" est inséré dans la colonne de chaîne de sqlite3, il est entré comme "1".
Différences de comportement entre les opérateurs append () et "+ =" lors de l'ajout de données à une liste en Python
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Comment compter le nombre d'occurrences de chaque élément de la liste en Python avec poids
Lorsque l'objet sélectionné dans bpy.context.selected_objects n'est pas renvoyé
[python] Récupère la liste des classes définies dans le module
Vérifiez s'il s'agit d'Unix dans le langage de script
Incorporation dans datetime lorsque seule l'heure est connue
[Python] Affiche toutes les combinaisons d'éléments de la liste
Vérifiez s'il s'agit d'Unix dans le langage de script
Quand vous pensez que la mise à jour de ManjaroLinux est étrange
Créer une liste lorsque la nomenclature est pour une certaine période de temps
Obtenir la valeur d'une clé spécifique jusqu'à l'index spécifié de la liste de dictionnaires en Python
Lorsqu'une chaîne de caractères d'une certaine série se trouve dans la clé du dictionnaire, la chaîne de caractères est convertie en valeur du dictionnaire.
[Traitement du langage naturel] J'ai essayé de visualiser les remarques de chaque membre de la communauté Slack
Remarque sur le comportement par défaut de collate_fn dans PyTorch
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
Comportement lorsque plusieurs serveurs sont spécifiés dans les serveurs de noms de dnspython
Obtenez le nombre d'éléments spécifiques dans la liste python
Obtenir l'index de la nième valeur la plus grande / la plus petite de la liste en Python
Découvrez combien de chaque caractère est dans la chaîne.
Méthode d'approximation numérique lorsque le calcul de la dérivée est gênant
Obtenir l'index de la nième valeur la plus grande / la plus petite de la liste en Python
Explication du CSV et exemple d'implémentation dans chaque langage de programmation
Précautions lors de la superposition de la fonction de densité de probabilité et de l'histogramme dans matplotlib