Prüfe die Elementzugehörigkeit in set in Python

8

Hallo Ich habe jetzt seit ein paar Monaten programmiert und kenne die Grundlagen, aber ich habe ein Problem mit der Mitgliedschaft, für das ich keine Lösung finden kann.

Ich habe eine Liste von Listen mit Ganzzahlpaaren, und ich möchte die Liste entfernen, in der die Ganzzahl "a" enthalten ist. Ich dachte, Sets zu verwenden, war der einfachste Weg. Bellow ist der Code:

%Vor%

Ich hatte auch versucht, s.subsubset (t) zu verwenden, bis ich erkannte, dass dies getestet wurde, wenn jedes -Element in s in t .

Danke!

    
grasshopper 18.08.2013, 15:16
quelle

4 Antworten

6

Sie möchten testen, ob es eine Schnittmenge :

%Vor%

oder

%Vor%

oder umgekehrt, dass die Mengen disjoint :

%Vor%

Die Methodenformen nehmen any iterierbar an, Sie müssen nicht einmal group in einen Satz dafür umwandeln. Der folgende Einzeiler würde auch funktionieren:

%Vor%

Demo:

%Vor%

Wenn alles, was Sie testen, ein -Element ist, dann könnte es sein, dass das Erstellen von Sets mehr Leistung kostet als das, was Sie beim Testen auf Mitgliedschaft bekommen, und einfach:

%Vor%

wobei group eine kurze Liste ist.

Sie können das Modul timeit verwenden, um Teile von Python-Code zu vergleichen, um zu sehen, was am besten funktioniert für Ihre spezifischen typischen Listengrößen.

    
Martijn Pieters 18.08.2013 15:18
quelle
3

Vielleicht könntest du List Comprehension verwenden:

%Vor%

Bearbeiten basierend auf einem Kommentar:

  

Nun zu den Neugierigen, was ich tun möchte ist; Ich habe eine Liste wie die   folgend: [[error, [[group_item_1, group_item_2], [...], [...],   [...]]], [mehr wie dieses vorhergehende], [...]], und ich möchte das bekommen   Item mit dem geringsten Fehler und das hat kein "a" in group_item_1 oder   group_item_2. Die Listen sind bereits nach Fehler sortiert. Ich gehe fast   es: D

Dies sollte den Trick machen:

%Vor%     
lpiepiora 18.08.2013 15:22
quelle
0

Warum sollten Sie nicht a = set ([3]) machen, warum nicht das Folgende tun?

%Vor%     
qaphla 18.08.2013 15:21
quelle
0

Sie müssen hier keine Sets verwenden, Sie können die Mitgliedschaft von Elementen in Listen testen. Sie scheinen auch in zu haben, wobei ich denke, dass Sie not in haben sollten.

Dieser Code ist Ihrem ähnlich und sollte funktionieren:

%Vor%

Allerdings verwendet ein kürzerer, mehr pythonischer Weg Listenergänzungen :

%Vor%

Wenn Sie testen, ob ein Element in einer viel längeren Liste ist, sollten Sie stattdessen Sets für die Leistung verwenden.

    
rlms 18.08.2013 15:21
quelle

Tags und Links