TypeError: unorderable types: int() > str() trotz int()

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.
BlackJack

@Alfons Mittelmeyer: Flag vs. `islice()` oder vor der Schleife das erste Element mit `next()` abfragen ist nicht egal weil ein Flag eine zusätzliche Variable und damit mehr Komplexität bedeutet. Es ist auch ineffizienter wenn in der Schleife für jedes Element ein Test gemacht wird, welcher nur beim ersten Element wahr ist und bei allen anderen zwar gemacht wird, aber zu keiner Aktion führt. Und das weiss man ja schon vorher, warum also nicht das Wissen nutzen und es vorher einmal abhandeln.

Wenn man nur macht was ein Anfänger ohne weiteres nachlesen versteht, dann kommt der nicht weiter. Auf so etwas wie `islice()` oder `next()` vor der Schleife kommt man als Anfänger in der Regel weil man das woanders mal gesehen hat, also sollte man Anfängern so etwas auch zeigen. Wenn ein Anfänger ausschliesslich das nimmt was er versteht, dann kann er ja gar nicht Programmieren, denn am Anfang versteht er ja gar nichts. Er lernt halt noch.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

@BlackJack Wie komplex oder effektiv etwas ist, hängt davon ab, wie es implementiert ist und compiliert wird und läßt sich so nicht ohne Weiteres sagen. Wenn islice das ist:

Code: Alles auswählen

def islice(iterable, *args):
    # islice('ABCDEFG', 2) --> A B
    # islice('ABCDEFG', 2, 4) --> C D
    # islice('ABCDEFG', 2, None) --> C D E F G
    # islice('ABCDEFG', 0, None, 2) --> A C E G
    s = slice(*args)
    it = iter(xrange(s.start or 0, s.stop or sys.maxint, s.step or 1))
    nexti = next(it)
    for i, element in enumerate(iterable):
        if i == nexti:
            yield element
            nexti = next(it)
Quelle: https://docs.python.org/2/library/itert ... ols.islice

dann ist es sehr komplex und gegenüber einem einfachen Flag auch nicht sehr effizient.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@Alfons Mittelmeyer: es geht um die Benutzung und die Komplexität des geschriebenen Codes, nicht um die Komplexität der dahinter stehenden Funktionen.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

@Siurius3 Da hast Du recht, in list_count liegt die eigentliche Fehlerursache nicht. Aber dort kann sie erkannt werden, indem man den Typ abfragt und wenn er nicht int ist, den Datensatz ausgibt, und dann kommt man darauf, wie es passiert.

Jetzt habe ich auf etwas geantwortet, was Du anscheinend wieder herausgelöscht hast.

Diskussionen über islice und bessere Strukturierung nützen dem OP wenig. Zuerst sollte es in erster Linie um das Erkennen des Fehlers gehen. Durch islice geht der bestimmt nicht weg.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Ach so, man braucht weder ein Flag noch braucht man islice noch braucht man eine if Abfrage, denn es geht auch so:

Code: Alles auswählen

for reihe_anzahl in vocabularies[1:]:
BlackJack

@Alfons Mittelmeyer: Also im Grunde `islice()` bloss mit Speicherverschwendung. Interessant wenn man bedenkt das Dir Speichereffizienz sonst *sooo* wichtig ist. ;-)
Antworten