-2
votes

Quelle est la meilleure façon de trouver toutes les intersections possibles de plusieurs ensembles?

Disons que j'ai les 4 ensembles suivants xxx pré>

Je souhaite trouver toutes les intersections possibles entre l'un de ces ensembles, tels que: P>

Set1 and Set4: 1
Set1 and Set2: 4,5
Set2 and Set3: 6,7
Set3 and Set4: 8,9


2 commentaires

Ne regardez-vous que des paires d'ensembles? ou n'importe quel nombre d'entre eux?


@pault n'importe quel nombre de ceux-ci.


3 Réponses :


1
votes

de ici :

# Python3 program for intersection() function 

set1 = {2, 4, 5, 6}  
set2 = {4, 6, 7, 8}  
set3 = {4,6,8} 

# union of two sets 
print("set1 intersection set2 : ", set1.intersection(set2)) 

# union of three sets 
print("set1 intersection set2 intersection set3 :", set1.intersection(set2,set3)) 


0 commentaires

0
votes

Vous devez trouver les 2 combinaisons définies (déduites de la sortie souhaitée). Qui peut être réalisé en utilisant [Python 3.Docs]: itTools. Combinaisons forts> ( itérables, r em>) . Pour chaque combinaison, l'intersection entre les 2 ensembles doit être effectuée.
Pour effectuer ce qui précède, les ensembles (Entrée) sont "groupés" dans une liste (itérade).

soulignant également [Python 3.Docs]: classe em> Set strong> ( [irafer] em>) .






[Python 3.Docs]: Fonctions intégrées - énumérer strong> ( iThable, start = 0 em>) est utilisé à des fins d'impression uniquement ( Set 1 strud> em> em>, Set 2 fort> em> em>, ... dans la sortie). P>

Sortie forte>: p>

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q056551261]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" code.py
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32

Set1 and Set2 = {4, 5}
Set1 and Set4 = {1}
Set2 and Set3 = {6, 7}
Set3 and Set4 = {8, 9}

Done.


0 commentaires

0
votes

Si vous recherchez uniquement des intersections de deux ensembles, vous pouvez simplement faire des boucles: xxx pré>

Si vous recherchez des intersections de n'importe quel nombre de ces ensembles, vous pouvez Utilisez des combinaisons () d'iTerTools pour produire un ensemble d'indices de puissance et effectuez l'intersection pour chaque combinaison: P>

from itertools import combinations
for comboSize in range(2,len(sets)):
    for combo in combinations(range(len(sets)),comboSize):
        intersection = sets[combo[0]]
        for i in combo[1:]: intersection = intersection & sets[i]
        print(" and ".join(f"Set{i+1}" for i in combo),"=",intersection)

Set1 and Set2 = {4, 5}
Set1 and Set3 = set()
Set1 and Set4 = {1}
Set2 and Set3 = {6, 7}
Set2 and Set4 = set()
Set3 and Set4 = {8, 9}
Set1 and Set2 = {4, 5}
Set1 and Set3 = set()
Set1 and Set4 = {1}
Set2 and Set3 = {6, 7}
Set2 and Set4 = set()
Set3 and Set4 = {8, 9}
Set1 and Set2 and Set3 = set()
Set1 and Set2 and Set4 = set()
Set1 and Set3 and Set4 = set()
Set2 and Set3 and Set4 = set()


1 commentaires

C'est parfait. Solution propre, facile à comprendre. Merci!!