Python >> Tutoriel Python >  >> Python

Comment vérifier si une liste a un nombre impair d'éléments ?

Formulation du problème

Étant donné une liste en Python. Comment vérifier si la liste a un nombre impair d'éléments ?

Exemples :

  • [] --> False
  • [1] --> True
  • [1, 2] --> False
  • [1, 2, 3] --> True

Article connexe :

  • Comment vérifier si une liste contient un nombre pair d'éléments ?

Méthode 1 :len() et Modulo

La façon la plus Pythonique de vérifier si une liste a un nombre impair d'éléments est d'utiliser l'expression modulo len(my_list)%2 qui renvoie 1 si la longueur de la liste est impaire et 0 si la longueur de la liste est paire. Donc, pour vérifier si une liste a un nombre impair d'éléments, utilisez l'expression len(my_list)%2==1 .

Voici un exemple de code simple :

def check_odd(my_list):
    return len(my_list)%2==1


print(check_odd([]))
# False

print(check_odd([1]))
# True

print(check_odd([1, 2]))
# False

print(check_odd([1, 2, 3]))
# True

En arrière-plan, n'hésitez pas à regarder la vidéo suivante sur l'opérateur modulo :

La fonction de longueur est expliquée dans cette vidéo et cet article de blog :

Une légère variante de cette méthode est la suivante.

Méthode 2 :len() et Modulo et bool()

Pour vérifier si une liste a un nombre impair d'éléments, vous pouvez utiliser l'expression modulo len(my_list)%2 qui renvoie 1 si la longueur de la liste est impaire et 0 si la longueur de la liste est paire. Donc, pour convertir la valeur impaire 1 en booléen, utilisez le bool() intégré fonction autour du résultat, c'est-à-dire bool(len(my_list)%2) .

Voici un exemple de code simple :

def check_odd(my_list):
    return bool(len(my_list)%2)


print(check_odd([]))
# False

print(check_odd([1]))
# True

print(check_odd([1, 2]))
# False

print(check_odd([1, 2, 3]))
# True

En arrière-plan, vous pouvez regarder cette vidéo explicative :

Méthode 3 :AND au niveau du bit

Vous pouvez utiliser l'expression len(my_list)&1 qui utilise l'opérateur ET au niveau du bit pour renvoyer 1 si la liste a un nombre pair d'éléments et 0 sinon. Maintenant, vous le convertissez simplement en booléen si nécessaire en utilisant le bool() fonction.

Le ET au niveau du bit de Python opérateur x & y effectue un ET logique sur chaque position de bit sur les représentations binaires des entiers x et y . Ainsi, chaque bit de sortie est 1 si les deux bits d'entrée à la même position sont 1, sinon, c'est 0.

Si vous exécutez x & 1 , Python effectue un et logique avec la séquence de bits y=0000...001 . Pour le résultat, toutes les positions seront 0 et la dernière position sera 1 uniquement si x la dernière position est déjà 1 ce qui veut dire que c'est bizarre.

Voici un exemple :

def check_odd(my_list):
    return bool(len(my_list)&1)


print(check_odd([]))
# False

print(check_odd([1]))
# True

print(check_odd([1, 2]))
# False

print(check_odd([1, 2, 3]))
# True

ET au niveau du bit est plus efficace que l'opérateur modulo, donc si les performances sont un problème pour vous, vous pouvez utiliser cette troisième approche.

Vous voudrez peut-être regarder cette vidéo sur l'opérateur Bitwise AND :