Listen oder Tupel "subtrahieren" :)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

Guten Morgen,

zuerst mal ein großes Lob an die Betreiber und User dieses Forums, hab es schon fast komplett durchgelesen *übertreib* und ich finde immer noch Interessantes und Neues :)

Da ich mit knapp einem Monat Python Erfahrung immer noch zu den Neulingen zähle und mein Ziel der PythonicWay ist habe ich dementsprechend viele Fragen wie man dieses und jenes in Python richtig löst.

Diesmal sind Mengen an der Reihe.
Nehmen wir die Menge a als Beispiel, a = ['ichbina', 'ichwarmala','binaucheina']
Ich würde nun gerne die Menge b von a abziehen, b = ['ichwarmala'], um zu dem Ergebnis c zu kommen. c = ['ichbina','binaucheina']

Idealerweise wäre es dann im Code so zu schreiben: c = a - b
Gibt es diese Möglichkeit von Haus aus, wenn nicht vielleicht stattdessen einen schlauen Python Weg oder muss ich da tatsächlich selbst Hand anlegen?

Vielen Dank für eure Hilfe ;)
mfg tlb
Benutzeravatar
Whitie
User
Beiträge: 216
Registriert: Sonntag 4. Juni 2006, 12:39
Wohnort: Schulzendorf

Also wenn nicht unbedingt c rauskommen soll, sondern nur alle Elemente aus a verschwinden sollen, die in b vorkommen:

Code: Alles auswählen

>>>a = ['a', 'b', 'c']
>>>b = ['b']
>>>[a.remove(element) for element in b]
>>>a
['a', 'c']
>>>
Gruß, Whitie

Edit: Bei Tupeln geht das natürlich nicht, da diese nicht veränderbar sind.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Sets implementieren das. Sind per definitionem jedoch nicht geordnet und jedes Element gibt es nur einmal. Wenn dir das reicht:

Code: Alles auswählen

>>> from sets import Set
>>> a=Set(['asd','bxb','asdd'])
>>> b=Set(['bxb'])
>>> a-b
Set(['asdd', 'asd'])
(Beachte, dass sich die Reihenfolge geändert hat)
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

Vielen Dank für die schnellen Antworten.
Ich glaube ich werde mich mal ein wenig mit den Sets spielen.

mfg tlb
Antworten