carrot ^ als Operator

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
mcdwerner
User
Beiträge: 113
Registriert: Donnerstag 7. Juli 2011, 14:27

Hi,

in diesem Quelltext bezüglich Natural-Sort bin ich auf ein carrot als Operator gestoßen:
http://dpaste.com/hold/1022826/

Zeile 12

Code: Alles auswählen

...
if c.isdigit() ^ numberMode:
...
ich kann jedoch nirgends eine Info über diesen Operator finden?
das Modul läuft korrekt unter Python 2.7 wenn ich jedoch das carrot durch ein "and" oder "or" ersetze ändert sich das Ergebnis.

Wer kann mir sagen, was dieses carrot macht???
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Hey,

hatte das Ganze noch als Bit Operator im Kopf, scheint auch richtig zusein:
x ^ y
Does a "bitwise exclusive or". Each bit of the output is the same as the corresponding bit in x if that bit in y is 0, and it's the complement of the bit in x if that bit in y is 1.
http://wiki.python.org/moin/BitwiseOperators
schaeffkoch
User
Beiträge: 38
Registriert: Dienstag 21. August 2012, 10:59

exclusives oder /xor
BlackJack

@mcdwerner: Da man nach dem Zeichen schlecht suchen kann ein Tipp für die Zukunft: Die Python-Dokumentation hat einen Index. Der Link ist auf so ziemlich jeder Seite der Dokumentation oben rechts. Darüber kann man auch für Sachen nach denen man mit Suchmaschinen schlecht suchen kann, die Dokumentation finden. :-)

Das Zeichen was Du meinst heisst übrigens „Caret” und nicht „Carrot”. Letzteres ist Karotte auf Englisch. Und streng genommen ist der ^ (Accent Circumflex) kein Caret, denn der ist auf, beziehungsweise unter, der Basislinie und nicht so weit oben: ‸ (ob da jetzt was angezeigt wird, hängt davon ab ob die Schriftart die zur Anzeige verwendet wird, ein Caret enthält)
mcdwerner
User
Beiträge: 113
Registriert: Donnerstag 7. Juli 2011, 14:27

Danke an euch alle!
die bit-weisen Operationen hab ich vor lauter Funktionen, Instanzen und Methoden schon wieder verdrängt...
@BlackJack: nach "python caret" googlen bringt auch deutlich bessere Suchergebnisse als "carrot" ;-)
Und ich merke gerade, dass der Link auf den Index in der Dokumentation bei mir häufig vom Chrome-Suchfeld verdeckt ist <facepalm-Smiley einsetzen>
BlackJack

@mcdwerner: Wobei die Implementierung IMHO nur bedingt von praktischem Interesse ist. Ich finde eine etwas kompaktere und vielleicht auch verständlichere `re`-Lösung besser:

Code: Alles auswählen

def natural_order_key_func(string):
    result = list()
    for part in re.findall(r'\d+|\D+', string):
        try:
            result.append(int(part))
        except ValueError:
            result.append(part)
    return result
mcdwerner
User
Beiträge: 113
Registriert: Donnerstag 7. Juli 2011, 14:27

@BlackJack: danke, mir ging es gar nicht so sehr um den Algorithmus und ich weiss auch nicht mehr woher ich den Link hatte. Wahrscheinlich würde ich beim Thema "Strings sortieren" auch zuerst ans re-Modul denken :D
Antworten