Python >> Tutoriel Python >  >> Python

Comment vérifier si un objet est de Type List en Python ?

Formulation du problème :Étant donné un objet Python. Comment vérifier si l'objet Python donné est de type list ?

Exemple :Soit un dictionnaire dont vous ne connaissez pas les valeurs associées aux clés. Par exemple, supposons que vous ayez l'entrée dict[key] dont vous ne connaissez pas le type. Comment vérifier s'il s'agit d'une liste ?

Given:    object
Goal:      True  –  –  if object is of type list
           False  –  – otherwise

Méthode 1 :type(objet) ==liste

Le moyen le plus simple de vérifier si un objet est de type liste est d'utiliser le type() intégré de Python fonction qui renvoie le type de l'objet qui lui est passé. Vous pouvez ensuite utiliser l'opérateur d'égalité pour comparer le type résultant de l'objet avec la liste en utilisant l'expression type(object) == list .

>>> d = {1: [1, 2, 3],
	 2: 'hello'}
>>> type(d[1]) == list
True

Si vous recherchez une non-liste, la valeur de retour est False :

>>> type(d[2]) == list
False

Notez que ce n'est pas la solution la plus pythonique car Python est un langage faiblement typé - vous pouvez redéfinir le nom list dans votre code auquel cas cela ne fonctionnerait pas comme prévu :

>>> d = {1: [1, 2, 3],
	 2: 'hello'}
>>> list = 42
>>> type(d[1]) == list
False

Ouah! C'est désordonné ! Soudain, votre élément de dictionnaire ne semble plus être une liste ! Bien sûr, c'est toujours le cas :le code ne fonctionne pas simplement parce que le nom list est maintenant associé à une valeur entière :

>>> type(list)
<class 'int'>

Par conséquent, il est recommandé d'utiliser le isinstance() méthode intégrée à la place pour vérifier si un objet est de type list .

Méthode 2 :isinstance(objet, liste)

La façon la plus Pythonique de vérifier si un objet est de type liste est d'utiliser la fonction intégrée de Python isinstance(object, list) qui renvoie soit True ou False .

>>> d = {1: [1, 2, 3],
	 2: 'hello'}
>>> isinstance(d[1], list)
True
>>> isinstance(d[2], list)
False

Notez que si vous écrasiez la liste de noms avec une valeur entière, Python générerait au moins une erreur (ce qui est une bonne chose car contrairement à la méthode 1, vous seriez maintenant conscient de l'erreur) !

>>> list = 42
>>> isinstance(d[1], list)
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    isinstance(d[1], list)
TypeError: isinstance() arg 2 must be a type or tuple of types

Cependant, vous devez savoir que l'utilisation de isinstance() n'est pas une solution ultime à ce problème d'écrasement du nom list - c'est encore possible. Cependant, cela fonctionnerait dans moins de cas.