___ qstnhdr ___ Python: Warum haben Listen keine Suchmethode?
___ answer3848964 ___
Ich weiß nicht warum oder vielleicht ist irgendwo in irgendeinem PEP begraben, aber ich kenne 2 sehr grundlegende "Finde" -Methode für Listen, und sie sind %code% und der %code% -Operator. Sie können immer diese 2 verwenden, um Ihre Artikel zu finden. (Auch, re Modul, etc)
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend.
___ tag123string ___ Eine Zeichenfolge ist eine endliche Abfolge von Symbolen, die üblicherweise für Text verwendet wird, manchmal jedoch auch für beliebige Daten.
___ antwort12224174 ___
Ich denke, die Gründe dafür, getrennte Such- und Indexmethoden zu verwenden, sind nicht unterschiedlich genug. Beide würden dasselbe zurückgeben, wenn das gesuchte Element in der Liste vorhanden ist (dies gilt für die beiden String-Methoden); Sie unterscheiden sich, wenn das gesuchte Element nicht in der Liste / Zeichenfolge enthalten ist. Sie können jedoch trivial entweder einen der find / index von dem anderen erstellen. Wenn Sie aus anderen Sprachen kommen, scheint es schlechte Manieren zu sein, Ausnahmen für eine Nicht-Fehler-Bedingung zu erzeugen und abzufangen, aber in Python wird es oft als pythisch angesehen, zuerst zu schießen und danach Fragen zu stellen , um die Ausnahmebehandlung anstelle von Tests wie diesem zu verwenden (Beispiel: Besser, etwas 'zu versuchen' und die Ausnahme abfangen oder testen, ob es möglich ist, zuerst eine Ausnahme zu vermeiden? ).
Ich denke nicht, dass es eine gute Idee ist, "find" aus "index" und "in" zu bauen, wie
%Vor%
weil sowohl in als auch index einen O (n) Durchlauf über die Liste erfordern.
Lieber "Finden" aus "Index" und versuchen / fangen, wie:
%Vor%
Nun, warum liste auf diese Weise (mit nur Index) erstellt wurde, und string wurde anders gebaut (mit separatem Index und find) ... kann ich nicht sagen.
___ tag123list ___ Liste kann sich beziehen auf: eine verkettete Liste (eine geordnete Menge von Knoten, die jeweils auf ihren Nachfolger verweisen) oder eine Form eines dynamischen Arrays. Um nicht für HTML-Listen verwendet zu werden, verwenden Sie stattdessen [html-lists].
___ tag123methods ___ Eine Methode (oft als Funktion, Routine oder Prozedur bezeichnet) ist Code, der eine Aufgabe ausführt und einer Klasse oder einem Objekt zugeordnet ist.
___ qstntxt ___
Ich habe versucht, eine Antwort zu diesem question und war ziemlich überrascht herauszufinden, dass es keine find-Methode für Listen gibt, Listen haben nur die index-Methode (Strings haben find und index).
Kann mir jemand die Gründe dafür sagen?
Warum haben Strings beides?
___ answer3848988 ___
Die Methode "find" für Listen ist %code% .
Ich halte die Inkonsistenz zwischen %code% und %code% sowohl im Namen als auch im Verhalten für unglücklich: %code% gibt -1 zurück, wenn keine Übereinstimmung gefunden wird, wobei %code% ValueError auslöst. Dies hätte konsequenter gestaltet werden können. Der einzige unüberbrückbare Unterschied zwischen diesen Operationen besteht darin, dass %code% nach einer Reihe von Elementen sucht, wobei %code% nach genau einem Element sucht (was allein die Verwendung anderer Namen nicht rechtfertigt).
___