0
votes

Comment vérifier tous les sublistes pour un ensemble d'éléments requis

Une liste contiendra 9 sublistes de 9 numéros. Chaque subliste doit contenir les nombres 1-9 dans n'importe quel ordre (c'est-à-dire qu'il ne doit y avoir aucune répétition / numéros manquants.) Comment vérifier que cette condition est remplie?

valide_list retournerait true, invalide_list retournerait false. xxx

Je suis sûr que tout () peut faire ça, mais je peux le faire 't comprendre comment. J'ai essayé beaucoup de choses comme .. xxx


0 commentaires

4 Réponses :


0
votes
all([[1,2,3,4,5,6,7,8,9] == sorted(list(set(el))) for el in lists])

0 commentaires

0
votes

Nous pouvons utiliser la fonction trier et comparer le résultat avec la liste contenant 1 à 9 xxx


1 commentaires

En s'asseyant au travail aujourd'hui, un collègue a également suggéré cette méthode, alors je me suis précipité chez moi et l'a essayé avec succès! Je compte maintenant que cela aurait pu être fait de nombreuses façons, mais comme novice, je ne pouvais pas voir le chemin. Merci pour cela, et d'autres solutions proposées



0
votes

Je définirais une fonction de validateur pour valider d'abord un subliste. Appelez ensuite ce validateur à l'aide de tout ().

EG. P>

def isValidList(myList):
    return True if len(set(myList)) == 9 and max(myList) == 9 and min(myList) == 1 else False

## returns True if all sublists are valid
all(isValidList(subList) for subList in some_list)


0 commentaires

0
votes

Vous pouvez supprimer la répétition de la liste intérieure en convertissant à un définir , puis vérifier que le jeu correspond au jeu de numéros valide

valid_list = [
    [1, 3, 5, 7, 9, 8, 6, 4, 2],
    [1, 2, 3, 4, 5, 6, 7, 8, 9],
    [5, 4, 3, 2, 1, 9, 8, 7, 6],
    [1, 3, 5, 7, 9, 8, 6, 4, 2],
    [1, 2, 3, 4, 5, 6, 7, 8, 9],
    [5, 4, 3, 2, 1, 9, 8, 7, 6],
    [1, 3, 5, 7, 9, 8, 6, 4, 2],
    [1, 2, 3, 4, 5, 6, 7, 8, 9],
    [5, 4, 3, 2, 1, 9, 8, 7, 6],
]


invalid_list = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1],
    [2, 1, 2, 1, 2, 1, 2, 1, 2],
    [9, 8, 7, 7, 7, 7, 6, 5, 6],
    [1, 1, 1, 1, 1, 1, 1, 1, 1],
    [2, 1, 2, 1, 2, 1, 2, 1, 2],
    [9, 8, 7, 7, 7, 7, 6, 5, 6],
    [1, 1, 1, 1, 1, 1, 1, 1, 1],
    [2, 1, 2, 1, 2, 1, 2, 1, 2],
    [9, 8, 7, 7, 7, 7, 6, 5, 6],
]


def validate_lists(lists):
    valid_set = set(range(1, 10))
    return all(set(list_) == valid_set for list_ in lists)

print(validate_lists(valid_list) == True)
print(validate_lists(invalid_list) == False)


0 commentaires