Python >> Tutoriel Python >  >> Python

Python :vérifier si une chaîne est vide dans une liste ?

Dans cet article, nous discuterons de différentes façons de vérifier si une liste contient une chaîne vide ou vide en python.

Utilisez any() et List Comprehension pour vérifier si la liste contient une chaîne vide

Nous avons créé une fonction pour vérifier si une chaîne est vide. Il considérera également une chaîne comme vide si elle ne contient que des espaces blancs,

import re

def is_empty_or_blank(msg):
    """ This function checks if given string is empty
     or contain only shite spaces"""
    return re.search("^\s*$", msg)

Utilisons maintenant cette fonction pour vérifier si une liste contient une chaîne vide ou vide,

# Create a list of string
list_of_str = ['11', 'This', 'is ', 'a', '', '  ', 'sample']

# Check if list contains any empty string or string with spaces only
result = any([is_empty_or_blank(elem) for elem in list_of_str])

if result:
    print('Yes, list contains one or more empty strings')
else:
    print('List does not contains any empty string')

Sortie :

Yes, list contains one or more empty strings

Cela confirme que notre liste contient une ou plusieurs chaînes vides / vides.

Logique de cette approche :

En utilisant la compréhension de liste, nous avons créé une liste booléenne à partir de notre liste d'origine. Si un élément dans la liste booléenne est True, cela signifie que l'élément correspondant
dans la liste d'origine est une chaîne vide ou vide.

Algorithme :

  • Créez d'abord une liste booléenne vide.
  • Parcourez ensuite chaque élément de la liste en utilisant la compréhension de liste et pour chaque élément de la liste,
    • Vérifiez s'il est vide ou non en utilisant la fonction is_empty_or_blank().
      • Si l'élément est une chaîne vide,
        • Ensuite, ajoutez True dans la liste booléenne.
      • Sinon
        • Ajouter bool à la liste bool.
  • Ensuite, passez cette liste booléenne à any() pour vérifier si la liste booléenne contient une valeur True ou non,
    • Si oui
      • Ensuite, il confirme que notre liste d'origine contient également une liste vide ou vide.
    • autrement
      • Il n'y a pas de chaîne vide/vide dans la liste d'origine.

Vérifier si la liste contient une chaîne vide en utilisant la boucle for

Au lieu d'utiliser la compréhension de liste, nous pouvons également implémenter la logique de la solution précédente en utilisant la boucle for, c'est-à-dire

# Create a list of string
list_of_str = ['11', 'This', 'is ', 'a', '', '  ', 'sample']

result = False

# iterate over all the elements in list to check if list contains any empty string
for elem in list_of_str:
    # Check if string is empty or contain only spaces
    if is_empty_or_blank(elem):
        result = True
        break;

if result:
    print('Yes, list contains one or more empty string')
else:
    print('List does not contains any empty string')

Sortie :

Yes, list contains one or more empty strings

Cela confirme que notre liste contient une ou plusieurs chaînes vides ou vides.

Ici, nous avons itéré sur tous les éléments de la liste et pour chaque élément, nous avons vérifié s'il s'agissait d'une chaîne vide ou non. Dès qu'il a rencontré la première chaîne vide ou vide, il a cessé de vérifier les éléments restants. Alors que, s'il n'y a pas de chaînes vides dans la liste, il ne confirme qu'après avoir vérifié tous les éléments de la liste.

L'exemple complet est le suivant,

import re


def is_empty_or_blank(msg):
    """ This function checks if given string is empty
     or contain only shite spaces"""
    return re.search("^\s*$", msg)

def main():
    print('*** Check if list contains any empty string using list comprehension ***')

    # Create a list of string
    list_of_str = ['11', 'This', 'is ', 'a', '', '  ', 'sample']

    # Check if list contains any empty string or string with spaces only
    result = any([is_empty_or_blank(elem) for elem in list_of_str])

    if result:
        print('Yes, list contains one or more empty strings')
    else:
        print('List does not contains any empty string')

    print('*** Check if list contains any empty string using for loop ***')

    result = False

    # iterate over all the elements in list to check if list contains any empty string
    for elem in list_of_str:
        # Check if string is empty or contain only spaces
        if is_empty_or_blank(elem):
            result = True
            break;

    if result:
        print('Yes, list contains one or more empty string')
    else:
        print('List does not contains any empty string')


if __name__ == '__main__':
    main()

Sortie :

*** Check if list contains any empty string using list comprehension ***
Yes, list contains one or more empty strings
*** Check if list contains any empty string using for loop ***
Yes, list contains one or more empty string