


Une stratégie pour vérifier efficacement si une combinaison de nombres existe en Python
Oct 15, 2025 pm 03:09 PMComprendre les défis de la vérification combinatoire de l'existence
Au cours du développement, nous rencontrons souvent des scénarios dans lesquels nous devons vérifier si une combinaison de numéros spécifique existe déjà dans un pool de numéros connu. Par exemple, étant donné une cha?ne numérique utilisée ? 1,2,3,4,5,8 ?, lorsque l'utilisateur saisit une nouvelle combinaison ? 1,3 ?, nous devons déterminer si les nombres 1 et 3 peuvent être trouvés dans ? 1,2,3,4,5,8 ?. Les vérifications d'inclusion de cha?ne brute (par exemple, if user_key dans used_keys) peuvent uniquement déterminer une correspondance exacte d'une sous-cha?ne et ne peuvent pas reconna?tre les combinaisons de nombres non consécutives ou réorganisées. Par exemple, ? 1,3 ? n'est pas une sous-cha?ne de ? 1,2,3,4,5,8 ?, mais ses numéros constitutifs 1 et 3 existent dans le pool de numéros utilisé. Par conséquent, nous avons besoin d’un moyen plus intelligent de vérifier la disponibilité de chaque numéro individuel dans la combinaison.
Solution 1?: traiter des combinaisons de nombres uniques?: utiliser des ensembles (Ensembles)
Lorsque chaque numéro du pool de numéros est unique, ou que nous nous soucions uniquement de savoir si le numéro lui-même existe et non le nombre d'occurrences, l'ensemble de Python est un outil idéal pour résoudre de tels problèmes. La caractéristique d’un ensemble est que ses éléments sont uniques et non ordonnés, ce qui le rend très approprié pour l’appartenance et le jugement de sous-ensembles.
concepts de base
L'idée principale de ce schéma est de convertir à la fois les nombres utilisés et les combinaisons de nombres saisies par l'utilisateur en ensembles. Il détermine ensuite si la combinaison est disponible en déterminant si l'ensemble de combinaisons de l'utilisateur est un sous-ensemble de l'ensemble de nombres utilisés. Si l'ensemble de combinaisons de l'utilisateur est un sous-ensemble de l'ensemble de numéros utilisés, cela signifie que tous les numéros de la combinaison existent déjà dans le pool de numéros utilisés.
étapes de mise en ?uvre
- Prétraitement des données?: divisez la cha?ne séparée par des virgules (qu'il s'agisse de nombres ou d'entrées utilisateur) en une liste de cha?nes numériques via la méthode split(',').
- Convertir en ensemble?: convertissez ces listes de cha?nes numériques en objets d'ensemble.
- Jugement de sous-ensemble?: utilisez la méthode issubset() pour vérifier si l'ensemble de combinaisons utilisateur est un sous-ensemble de l'ensemble de nombres utilisé.
Exemple de code
# En supposant que les nombres soient utilisés, chaque numéro est considéré comme unique used_keys_str = '1,2,3,4,5,8' # Convertit la cha?ne en un ensemble de nombres available_numbers = set(used_keys_str.split(',')) # Imprime l'ensemble des nombres utilisés, par exemple?: {'1', '2', '4', '5', '8'} user_key_input = input("Veuillez saisir votre nouvelle combinaison (par exemple : 1,3)?:") # Convertit la combinaison des entrées utilisateur en un ensemble de nombres input_numbers = set(user_key_input.split(',')) # Vérifiez si la combinaison saisie par l'utilisateur est un sous-ensemble des nombres disponibles si input_numbers.issubset(available_numbers)?: print(f"Votre combinaison ({user_key_input}) existe déjà.") autre: print("Combinaison disponible.")
Analyse des codes
- used_keys_str.split(',') : divisez la cha?ne '1,2,3,4,5,8' en ['1', '2', '3', '4', '5', '8'].
- set(...) : convertit la liste en un ensemble, tel que {'1', '2', '3', '4', '5', '8'}.
- input_numbers.issubset(available_numbers) : C'est l'étape clé. Il vérifie si chaque élément de la collection input_numbers existe dans la collection available_numbers.
Exécutez l'exemple
-
Entrez 1,3?:
- nombres_disponibles = {'1', '2', '3', '4', '5', '8'}
- nombres_entrée = {'1', '3'}
- {'1', '3'} est un sous-ensemble de {'1', '2', '3', '4', '5', '8'}.
- Résultat?: Votre combinaison (1,3) existe déjà. (correct)
-
Entrez 1,9?:
- nombres_disponibles = {'1', '2', '3', '4', '5', '8'}
- nombres_entrée = {'1', '9'}
- {'1', '9'} n'est pas un sous-ensemble de {'1', '2', '3', '4', '5', '8'} (car '9' n'existe pas).
- Sortie?:?Combinaisons disponibles. (correct)
Choses à noter
Cette méthode suppose que la combinaison d’entrée suit strictement le format 1,2 séparé par des virgules. Dans les applications pratiques, une vérification supplémentaire de la saisie utilisateur doit être effectuée pour éviter les erreurs de programme provoquées par une saisie contenant des caractères non numériques ou non conformes au format.
Solution 2 : Traiter les combinaisons contenant des nombres répétés - utiliser le compteur (Counter)
Dans certains scénarios avancés, il peut y avoir des numéros en double dans le pool de numéros, et nous devons tenir compte de ces duplications. Par exemple, si les nombres utilisés sont ? 1,2,2,4,5,8 ?, et lorsque l'utilisateur saisit ? 2,2 ?, nous devrions penser que cette combinaison existe déjà, et en saisissant ? 4,4 ?, nous devrions penser que la combinaison n'est pas disponible (car 4 n'appara?t qu'une seule fois). Dans ce cas, un simple jugement de sous-ensemble ne suffit pas, nous devons conna?tre le nombre d’occurrences de chaque nombre. Collections.Counter de Python est un outil puissant pour traiter ce type de problème.
concepts de base
Counter est une sous-classe de dictionnaire utilisée pour stocker un nombre d'objets hachables. Il peut facilement compter les occurrences de chaque élément de la liste. En comparant deux objets Counter, nous pouvons déterminer si le numéro d'une combinaison et son nombre d'occurrences sont satisfaits dans l'autre combinaison.
étapes de mise en ?uvre
- Prétraitement des données?: divisez également la cha?ne séparée par des virgules en une liste de cha?nes numériques à l'aide de la méthode split(',').
- Convertir en compteur?: utilisez collections.Counter pour convertir cette liste de cha?nes numériques en objets Counter, qui compteront les occurrences de chaque nombre.
- Comparaison de compteur?: utilisez l'opérateur de comparaison (
Exemple de code
à partir du compteur d'importation de collections # Supposons que les nombres soient utilisés, considérez la duplication used_keys_str_with_duplicates = '1,2,2,4,5,8' # Convertit la cha?ne en un objet Counter available_numbers_counter = Counter(used_keys_str_with_duplicates.split(',')) # Imprime le compteur de nombres utilisé, par exemple : Counter({'2': 2, '1': 1, '4': 1, '5': 1, '8': 1}) user_key_input_with_duplicates = input("Veuillez saisir votre nouvelle combinaison (par exemple?: 2,2)?:") # Convertir la combinaison des entrées utilisateur en un objet Counter input_numbers_counter = Counter(user_key_input_with_duplicates.split(',')) # Vérifiez si le nombre de combinaisons saisies par l'utilisateur est satisfait par le nombre de nombres disponibles si input_numbers_counter <h4> Analyse des codes</h4>
- Counter(used_keys_str_with_duplicates.split(',')) : Convertir ['1', '2', '2', '4', '5', '8'] en Counter({'2' : 2, '1' : 1, '4' : 1, '5' : 1, '8' : 1}).
- input_numbers_counter
Exécutez l'exemple
-
Entrez 2,2?:
- available_numbers_counter = Compteur ({'2' : 2, '1' : 1, '4' : 1, '5' : 1, '8' : 1})
- input_numbers_counter = Compteur({'2': 2})
- Counter({'2': 2}) a tous les nombres d'éléments inférieurs ou égaux à available_numbers_counter.
- Résultat?: Votre combinaison (2,2) existe déjà. (correct)
-
Entrez 4,4?:
- available_numbers_counter = Compteur ({'2' : 2, '1' : 1, '4' : 1, '5' : 1, '8' : 1})
- input_numbers_counter = Compteur({'4': 2})
- Le nombre de ? 4 ? dans input_numbers_counter est 2, tandis que le nombre de ? 4 ? dans available_numbers_counter est 1, ce qui ne satisfait pas à la condition inférieur ou égal à.
- Sortie?:?Combinaisons disponibles. (correct)
Résumé et bonnes pratiques
Le choix d'un ensemble ou d'un comptoir dépend de vos besoins spécifiques?:
- Utiliser set?: lorsque vous vous souciez uniquement de l'existence du nombre lui-même, quel que soit le nombre d'occurrences, ou lorsque tous les nombres doivent être considérés comme uniques, set est un choix plus concis et efficace.
- Utilisation de collections.Counter : Counter fournit une solution exacte lorsque vous devez gérer la nature répétitive des nombres et que l'existence d'une combinaison dépend de la quantité disponible de chaque numéro.
Dans le développement réel, en plus de choisir la bonne structure de données, vous devez également prêter attention aux points suivants :
- Vérification des entrées?: les entrées de l'utilisateur sont toujours strictement vérifiées pour garantir qu'elles sont dans le format correct et qu'elles ne contiennent que les caractères attendus pour améliorer la robustesse du programme.
- Considérations sur les performances?: pour des quantités de données extrêmement importantes, bien que les opérations set et Counter soient généralement très efficaces (la complexité temporelle moyenne est proche de O(1)), la surcharge de prétraitement des données (telle que les opérations de fractionnement) doit également être prise en compte.
- Clarifiez les exigences?: avant de commencer à coder, précisez si la répétition des nombres doit être prise en compte dans la logique métier. Cela déterminera directement la solution que vous choisirez.
Grace à la méthode ci-dessus, nous pouvons vérifier de manière flexible et efficace l'existence de combinaisons de nombres en Python en fonction des différents besoins de l'entreprise.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT
Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Ce tutoriel détaille comment fusionner efficacement l'adaptateur PEFT LORA avec le modèle de base pour générer un modèle complètement indépendant. L'article souligne qu'il est faux d'utiliser directement Transformers.Automodel pour charger l'adaptateur et fusionner manuellement les poids, et fournit le processus correct pour utiliser la méthode Merge_and_unload dans la bibliothèque PEFT. De plus, le tutoriel souligne également l'importance de traiter les segments de mots et discute des problèmes et des solutions de compatibilité des versions de PEFT.

Exécutez pipinstall-rrequirements.txt pour installer le package de dépendance. Il est recommandé de créer et d'activer l'environnement virtuel d'abord pour éviter les conflits, s'assurer que le chemin du fichier est correct et que le PIP a été mis à jour et utiliser des options telles que --No-Deps ou --User pour ajuster le comportement d'installation si nécessaire.

Python est un outil de test simple et puissant dans Python. Après l'installation, les fichiers de test sont automatiquement découverts en fonction des règles de dénomination. écrivez une fonction commen?ant par test_ pour les tests d'assurance, utilisez @ pytest.fixture pour créer des données de test réutilisables, vérifiez les exceptions via PyTest.Rais, prend en charge l'exécution de tests spécifiés et plusieurs options de ligne de commande et améliore l'efficacité des tests.

TheargParsemoduleisthereComMendwaytoHandleCommand-lineargumentsInpython, fournissantRobustParsing, Typevalidation, HelpMessages, AnderrorHling; usys.argvforsimplécasesrequiringminimalsepup.

Cet article vise à explorer le problème commun de la précision de calcul insuffisante des nombres de points flottants dans Python et Numpy, et explique que sa cause profonde réside dans la limitation de représentation des nombres de points flottants 64 bits standard. Pour les scénarios informatiques qui nécessitent une précision plus élevée, l'article introduira et comparera les méthodes d'utilisation, les fonctionnalités et les scénarios applicables de bibliothèques mathématiques de haute précision telles que MPMATH, SYMPY et GMPY pour aider les lecteurs à choisir les bons outils pour résoudre les besoins de précision complexe.

Cet article détaille comment utiliser la fonction Merge_and_Unload de la bibliothèque PEFT pour fusionner efficacement et avec précision l'adaptateur LORA dans le modèle de base de base, créant ainsi un tout nouveau modèle avec des connaissances affineuses intégrées. L'article corrige les malentendus courants sur le chargement des adaptateurs et la fusion manuelle des poids des modèles via Transformers.

PYPDF2, PDFPLUMBER et FPDF sont les bibliothèques de base pour Python pour traiter PDF. Utilisez le PYPDF2 pour effectuer l'extraction de texte, la fusion, la division et le chiffrement, tels que la lecture de la page via Pdfreader et l'appel extract_text () pour obtenir du contenu; PDFPLUMBER convient plus pour conserver l'extraction de texte de mise en page et la reconnaissance de la table, et prend en charge extract_tables () pour capturer avec précision les données de table; FPDF (FPDF2 recommandé) est utilisé pour générer du PDF, et les documents sont construits et sorties via add_page (), set_font () et cellule (). Lors de la fusion des PDF

Importer @ contextManagerfromContextLibandDeFineAgeneratorFonctionnement toTyieldSexactlyOnce, où les actes de championnalsAnterAndCodeLifteryiel
