Im Moment mache ich eine Übung mit einer Liste, die der Benutzer macht, die sich mit String-Werten füllt. Die Liste wird erstellt und enthält eine Länge von 5 verschiedenen Werten. Dies war der Code, der die oben beschriebene Liste erstellt.Warum entfernt die von diesem Skript erstellte for-Schleife alle Elemente anstelle der angegebenen Indizes?
make_list = []
for x in range(5):
x = input('Please give me some random words: ')
Nach Worten, was ich möchte für meinen Python-Skript tun, ist die 0., 4. entfernen und fünften Elemente in dieser Liste. Sobald ich fertig bin, sind nur noch zwei Wörter aus dieser Liste übrig. Hier ist der Teil des Codes, den ich erstellt habe.
def new_list(alist):
for x in range(len(alist)):
if x == 0 or x == 3 or x == 4:
alist.pop(x)
return alist
Dann habe ich die Funktion mithilfe der oben erstellten Liste aufgerufen.
print(new_list([make_list]))
Was ich immer am Ende auf pycharm bin, ist nur eine leere Liste angezeigt. []
Was genau fehlt mir in dem ganzen Skript geschrieben unten, das verursacht diese ganze Sache zu Pop/Entfernen Sie alle der Liste statt der angegebenen Indizes.
make_list = []
for x in range(5):
x = input('Please give me some random words: ')
def new_list(alist):
for x in range(len(alist)):
if x == 0 or x == 3 or x == 4:
alist.pop(x)
return alist
print(new_list([make_list]))
EDIT
noch immer, dass leere Liste, was auf geht. Hier ist der aktualisierte Code, den ich eingegeben habe.
make_list = []
for x in range(5):
x = input('Please give me some random words: ')
make_list.append(x)
def new_list(alist):
for x in range(len(alist)):
if alist.index(alist[x]) == 0 or alist.index(alist[x]) == 3 or alist.index(alist[x]) == 4:
alist.remove(alist[x])
return alist
print(new_list([make_list]))
Untersuchen Sie 'Alist' in' new_list'. Sie übergeben es eine Liste mit 'make_list'. Sie möchten 'new_list (make_list)' oder 'new_list (list (make_list))' '.Sie haben auch ein Problem mit Ihrer Schleife in 'new_list'. Sehen Sie, ob Sie herausfinden können, was es ist, nachdem Sie dieses erste Ding repariert haben. – Galen
Ich habe meine Antwort gelöscht, weil diese Frage viel zu weit gefasst ist. Es gibt mehrere Probleme mit dem Code, die verhindern, dass er funktioniert. Sie müssen die Frage eingrenzen. – Carcigenicate
Entfernen Sie die eckigen Klammern in Ihrer Druckanweisung in der letzten Zeile, und Sie erhalten den Listenindex außerhalb des Bereichs, der auftritt, wenn Sie Elemente aus einer Liste entfernen, wenn Sie auf diese Weise iterieren. – 22degrees