Seite 1 von 1

Listen oder Tupel "subtrahieren" :)

Verfasst: Samstag 22. Juli 2006, 09:41
von thelittlebug
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

Verfasst: Samstag 22. Juli 2006, 09:51
von Whitie
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.

Verfasst: Samstag 22. Juli 2006, 10:01
von Joghurt
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)

Verfasst: Samstag 22. Juli 2006, 11:44
von thelittlebug
Vielen Dank für die schnellen Antworten.
Ich glaube ich werde mich mal ein wenig mit den Sets spielen.

mfg tlb