2016-05-24 6 views
-3

Ich bin auf der Suche nach einem einzigen Satz Operation, um die beiden folgenden Fälle zu erreichen. Gibt es eine Möglichkeit, diese Python zu machen?Setzen Sie Operationen in Python

Fall 1:
a = set([1,2]) und b = set([1,2,3])
Ich möchte ein Ergebnis [1,2], die eine einfache Kreuzung ist. Jetzt könnte set(a) leer sein und die Durchführung einer Kreuzung bei einem leeren Satz mit irgendeinem anderen Satz würde zu einem leeren Satz führen.

Fall 2:
a = set([]) und b = set([1,2,3]) => set([1,2,3]) d.h. Satz b

Wie kann ich Fall 1 und Fall 2 mit einem Satz Betrieb erreichen.

+0

Welche Operation wird Fall 2 sein soll? Union? – khelwood

+0

Möchten Sie sowohl "Vereinigung" als auch "Kreuzung" in einem Vorgang passieren? – Shreevardhan

+6

Es ist unklar, was Sie fragen - es * sieht * aus wie Sie wollen, dass eine Single-Set-Operation, die widersprüchliches Verhalten hat. Kannst du es ausarbeiten? –

Antwort

1

Verwenden and und or, das Produkt sei Kurzschluss die gewünschten Ergebnisse zu produzieren:

>>> a = {1,2} 
>>> b = {1,2,3} 
>>> a and a&b or b 
{1, 2} 
>>> a = {} 
>>> b = {1,2,3} 
>>> a and a&b or b 
{1, 2, 3} 
+0

Ich glaube nicht, dass dies das beabsichtigte Ergebnis (den leeren Schnittpunkt) für 'a = {1,2} ',' b = {3,4} ' – khelwood

+1

ergibt. Ich dachte nicht daran, diesen Fall zu testen. @ProgramQuestions, können Sie dies nicht akzeptieren, damit ich es löschen kann? – TigerhawkT3

3

Wenn das, was Sie wollen, ist „wenn a nicht leer ist, gib mir die Kreuzung, ansonsten gib mir nur b“, dann, was Sie wollen, ist:

result = (a&b) if a else b 

„Ich will nicht verwenden, if Bedingung, um seinen Wert zu überprüfen "macht nicht viel Sinn als Voraussetzung. Dies ist, was if ist für: variierendes Verhalten basierend auf einigen Bedingungen.

Verwandte Themen