J'ai une liste:
a = [1, 2, 6, 4, 3, 5, 7]
5 Réponses :
Pour votre première question Si vos éléments sont hadrables, vous pouvez créer un ensemble contenant les éléments et vérifier sa longueur: Vous pouvez utiliser cette fonction qui peut donner une meilleure performance que ce qui précède que ce qui précède Si le résultat est faux (mais pire des performances lorsque le résultat est vrai): p>
Quand j'ai lu votre question, j'ai eu une signification différente de celui-ci que Mark a fait. Si vous souhaitez vérifier si un élément particulier n'apparaît qu'une seule fois,
def occurs_once(a, item): return a.count(item) == 1
Ne supposez-vous pas que la liste ne contient pas de double? De plus, ne devriez-vous pas seulement vérifier si chaque élément de la plage (1, n + 1) code> est dans
a code>?
plage code> est un générateur de nouveaux pythons.
Oh je vois, je pense que nous avons compris la question différemment. Je pensais que tous les chiffres de 1 - N code> doivent être contenus dans la liste, quelle que soit la commande et la position, et peuvent également être mélangés à d'autres numéros.
@Herman, ils ne pouvaient pas être mélangés avec d'autres chiffres, quelle que soit la façon dont vous lisez la question. a = [1, 2, ..., len (A)]] code> doit contenir une copie de chaque numéro entre 1 et
len (a) code> s'il y a un autre numéro dans Là, il ne satisfait pas aux exigences. Ma méthode était fausse de ne pas vérifier Min and Max. Par exemple,
[0, 1, 2, 7] code> somme à 7 et bat mon test sans chèque.
( len( set( a ) ) == len( a ) == max( a ) ) and min( a ) == 1
La deuxième réponse nécessite que tous les éléments de a code> soient des entiers.
J'aimerais que cela beaucoup plus si c'était écrit dans le style Pep8. Comme il se trouve, le code a l'air horrible.
@ J.f. Sebastian: Oui, mais j'ai simplement supposé que de la question :) - @blue Peppers: Désolé, mais j'utilise trop de langues différentes pour avoir un style de codage différent pour chacun; Et c'est tout simplement comme ça que j'aime le plus.
J'ai compris que vous voulez quelque chose comme ça:
Pour la deuxième question, vous voudrez peut-être vérifier
sorted(a) == range(1, len(a) + 1)
Que voulez-vous dire par alors tous les éléments de 1 à 4 ne sont pas dans la liste i>? D'où vient 1 à 4 i>?
Pour votre première question, voulez-vous vérifier si chaque élément i> apparaît qu'une seule fois, ou si un élément spécifique i> ne se produit qu'une seule fois dans la liste?