lima-city: Webhosting, Domains und Cloud
0 Pluspunkte 0 Minuspunkte

Angenommen ich habe ein Array

arr = [1,2,3,4,5]

und möchte alle Einträge ab Stelle 1 bis zur vorletzten Stelle in einem neuen Array speichern.

arr = [1,2,3,4,5]

newarr = []

i = 0

j = 0

for a in arr:

    if i > 0 and i < len(arr) - 1:

        newarr[j] = a

    i = i + 1
    
print(newarr)

Ich bekomme aber den Fehler

ERROR!
Traceback (most recent call last):
  File "<string>", line 15, in <module>
IndexError: list assignment index out of range

und verstehe nicht ganz was ich falsch mache.

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Du versuchst Werte mit der Indexierungsmethode zuzuweisen, aber die Liste newarr ist am Beginn leer da geht das nicht. Du kannst die neuen Elemente mit append() hinzufügen.

newarr.append(a)

Noch einfacher wäre, du nutzt "Slicing". Dabei werden sequentielle Datentypen (Liste, Array, Tuple,etc) in Teillisten aufgeteilt. Die Syntax lautet

arr[start:stop:step]

Ein Beispiel

arr = [1, 2, 3, 4, 5]
result = arr[1:-1:1]

Das array arr hat 5 Elemente. Der Ausdruck arr[1:-1:1] bedeutet wir beginnen bei Index 1 (es wird bei 0 begonnen zu zählen), gehen bis zum vorletzten Element (-1; bedeutet das 2. Element von hinten) und zählen jeden Index (-1; minus bedeutet in umgekehrter Reihenfolge!).

print(result)  # Ausgabe: [2, 3, 4]
von (718 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.3k Fragen

2.8k Antworten

261 Kommentare

13 Nutzer