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 (776 Punkte)