In meinem Programm gibt der Benutzer die Nummer n
und dann die n
Anzahl der Zeichenfolgen ein, die in einer Liste gespeichert werden.
Ich muss so codieren, dass, wenn ein bestimmter Listenindex vorhanden ist, eine Funktion ausgeführt wird.
Dies wird durch die Tatsache komplizierter, dass ich if-Aussagen über verschachtelt habe len(my_list)
.
Hier ist eine vereinfachte Version von dem, was ich jetzt habe, was nicht funktioniert:
n = input ("Define number of actors: ")
count = 0
nams = []
while count < n:
count = count + 1
print "Define name for actor ", count, ":"
name = raw_input ()
nams.append(name)
if nams[2]: #I am trying to say 'if nams[2] exists, do something depending on len(nams)
if len(nams) > 3:
do_something
if len(nams) > 4
do_something_else
if nams[3]: #etc.
python
python-2.7
user1569317
quelle
quelle
n
als ob Sie cast als Ganzzahl und nicht als Liste eingeben möchten . Ich bin verwirrt.n
anstattnams
in denif
slen
die Liste mindestens einen bestimmten Wert hat?Antworten:
Könnte es für Sie nützlicher sein, die Länge der Liste
len(n)
zu verwenden, um Ihre Entscheidung zu informieren, alsn[i]
nach jeder möglichen Länge zu suchen?quelle
Ich muss so codieren, dass, wenn ein bestimmter Listenindex vorhanden ist, eine Funktion ausgeführt wird.
Dies ist die perfekte Verwendung für einen Try-Block :
Per Definition sind jedoch alle Elemente in einer Python-Liste zwischen
0
undlen(the_list)-1
vorhanden (dh es ist kein Versuch erforderlich, es sei denn, Sie wissen es0 <= index < len(the_list)
).Sie können enumerate verwenden, wenn die Indizes zwischen 0 und dem letzten Element liegen sollen:
Wenn Sie nach einem definierten 'Index'-Gedanken suchen, stellen Sie wahrscheinlich die falsche Frage. Vielleicht sollten Sie einen Zuordnungscontainer (z. B. ein Diktat) gegenüber einem Sequenzcontainer (z. B. eine Liste) verwenden. Sie können Ihren Code folgendermaßen umschreiben:
Läuft wie folgt:
Sie können auch die .get- Methode verwenden, anstatt / zu versuchen, mit Ausnahme einer kürzeren Version:
quelle
try
ist nicht Ihnen sagen , wenn der Index nur existiert , wenn es abrufbaren ist - nehmen-1
- dieser Index nicht wirklich existiert , sondern ein Wert würde zurückgegeben werden.len(nams)
sollte gleichn
in Ihrem Code sein. Alle Indizes0 <= i < n
"existieren".quelle
Dies kann einfach mit dem folgenden Code erfolgen:
quelle
Sie wissen bereits, wie Sie dies testen können, und führen solche Tests bereits in Ihrem Code durch .
Die gültigen Indizes für eine Liste der Länge
n
sind0
bisn-1
einschließlich.Eine Liste hat also
i
genau dann einen Index, wenn die Länge der Liste mindestens beträgti + 1
.quelle
Die Verwendung der Länge der Liste wäre die schnellste Lösung, um zu überprüfen, ob ein Index vorhanden ist:
Dies testet auch auf negative Indizes und die meisten Sequenztypen (Like
ranges
undstr
s), die eine Länge haben.Wenn Sie danach trotzdem auf das Element in diesem Index zugreifen müssen, ist es einfacher, um Vergebung als um Erlaubnis zu bitten , und es ist auch schneller und pythonischer. Verwenden Sie
try: except:
.Dies wäre im Gegensatz zu:
quelle
Wenn Sie die eingefügten Akteursdaten iterieren möchten:
quelle
ok, also ich denke es ist tatsächlich möglich (aus Gründen der Argumentation):
quelle
3 in range(len(your_list)
3 in xrange(len(your_list)
- kann es wahrscheinlich nicht besser machenSie können so etwas versuchen
quelle
Einzeiler:
Vollständiges Beispiel:
Nur zur Info. Imho,
try ... except IndexError
ist eine bessere Lösung.quelle
Lassen Sie keinen Platz vor Ihren Halterungen.
Beispiel:
Tipp: Sie sollten Kommentare über und / oder unter Ihrem Code hinzufügen. Nicht hinter deinem Code.
Einen schönen Tag noch.
quelle
Viele Antworten, nicht die einfache.
So überprüfen Sie, ob bei dictionary dict eine Index-ID vorhanden ist:
Gibt true zurück, wenn 'age' vorhanden ist.
quelle