Überprüfen Element-Mitgliedschaft in set in Python
Hallo, ich habe schon die Codierung für ein paar Monate jetzt und kennen die Grundlagen, aber ich bin mit einem Satz membership-problem für das ich keine Lösung finden.
Habe ich eine Liste von Listen von Paaren von Integer-zahlen, und ich möchte, um die Liste zu löschen, die die "ein" integer in Ihnen. Ich dachte, mit Sätzen war der einfachste Weg. Balg ist der code:
## This is the item to test against.
a = set([3])
## This is the list to test.
groups = [[3, 2], [3, 4], [1, 2], [5, 4], [4, 3]]
## This is a list that will contain the lists present
## in groups which do not contain "a"
groups_no_a = []
for group in groups:
group = set(group)
if a in group:
groups_no_a.append(group)
## I thought the problem had something to do with
## clearing the variable so I put this in,
## but to no remedy.
group.clear()
print groups_no_a
Hatte ich auch versucht, mit Hilfe s.issubset(t)
, bis ich erkannte, dass dies geprüft, wenn jeder element in s
in t
.
Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Sie testen möchten, wenn es keine Kreuzung:
oder
oder, Umgekehrt, dass die sets sind getrennten:
Die Methode Formen nehmen alle iterierbar, Sie haben nicht einmal zu drehen
group
in eine Reihe für die. Der folgende Einzeiler würde auch funktionieren:Demo:
Wenn alle, die Sie testen, ist eine element, dann könnte es sein, dass das erstellen von sets kostet mehr Leistung als das, was Sie gewinnen in der Prüfung für die Mitgliedschaft, und nur tun:
wo
group
ist eine kurze Liste.Können Sie die
timeit
- Modul zu vergleichen Stücke von Python-code, um zu sehen, was funktioniert am besten für Ihre spezifische typische Liste Größen.one_element in somelist
hat das Scannen der Liste.set
wurde Hinzugefügt, als eine Art der Sprache.in
undnot in
geeignet sind. Also, ich würde sagen, dass sollte der Schwerpunkt einer Antwort, mit Sätzen erwähnt kürzer, was auf die Verwendung beider Methoden. Jedoch, deine Antwort ist das Gegenteil.Vielleicht könnten Sie List Comprehension:
Bearbeiten, basierend auf einem Kommentar:
Dies sollte den trick tun:
Anstatt a = set([3]), warum dann nicht Folgendes tun?
Brauchen Sie nicht zu verwenden, legt hier können Sie testen, für die Mitgliedschaft von Elementen in Listen. Sie scheinen auch zu haben
in
, wo ich denke, du solltestnot in
.Dieser code ist ähnlich wie bei Ihnen, und sollte funktionieren:
Jedoch eine kürzere, mehr Pythonic way verwendet Liste Verstehens:
Wenn Sie testen, ob ein Element in einer viel längeren Liste, die Sie verwenden sollten, setzt sich stattdessen für die Leistung.