Essayez une liste de compréhension :
h_list = ['h1','h2','h3','h4','h5']
d_list = [
[1, None, 3, ' ', 5],
[1, ' ', 2, ' ', 9]
]
empty = [' ', None]
h_list = [' ' if any(b[i] in empty for b in d_list) else v for i, v in enumerate(h_list)]
print(h_list)
Sortie :
['h1', ' ', 'h3', ' ', 'h5']
Décomposition de cette partie du code :
h_list = [' ' if any(b[i] in empty for b in d_list) else v for i, v in enumerate(h_list)]
Tout d'abord, nous n'avons que
[(i, v) for i, v in enumerate(h_list)]
Il s'agit d'une liste des indices et des valeurs de chaque élément de la rubrique h_list
.
Maintenant, nous utilisons un if
pour déterminer quand ajouter le ' '
. Tout d'abord, nous devons reconnaître la any()
fonction :
any(b[i] in empty for b in d_list)
retours True
si tous des tableaux à l'intérieur de d_list
à l'index i
est dans la empty
liste. Nous voulons None
y ' '
soit en place pour toutes les chaînes de la rubrique h_list
que son index renvoie un ' '
o None
pour n'importe quelle liste dans d_list
, donc :
[' ' for i, v in enumerate(h_list) if any(b[i] in empty for b in d_list)]
Enfin, nous voulons utiliser la chaîne originale si no any(b[i] in empty for b in d_list)
. Pour cela, nous utilisons un else
déclaration (il est à noter qu'avec un else
les déclarations sont déplacées vers le côté gauche de l'écran d'affichage. for
boucle.) :
h_list = [' ' if any(b[i] in empty for b in d_list) else v for i, v in enumerate(h_list)]