2015-07-02 9 views
9

Ich versuche, ein Array dynamisch in einer Schleife wie array[n-i:-i] zugreifen und es funktioniert gut, solange i != 0. Im Fall i==0 habe ich array[n:0], die ich erwarten würde, von n bis zum Ende auszugeben, aber es gibt nichts zurück (None ich denke). Wie archiviert man das erwartete Verhalten?Python dynamischen Array-Zugriff [: 0]

+2

Warum würde Schneiden bis "0" alles bis zum Ende produzieren? '0' ist ein gültiger Index. Verwenden Sie 'None', wenn Sie bis zum Ende schneiden möchten. –

Antwort

11

Verwenden Sie None, um bis zum Ende zu schneiden; Python wird dann len(array) als Endpunkt verwenden. Verwenden Sie or, um wieder zu None fallen, wenn -i0 ist:

array[n-i:-i or None] 

Numeric 0 ist considered false in Python boolean contexts. Die or operator short-circuits; es gibt den ersten Operanden zurück, wenn es ein wahrer Wert ist, andernfalls wertet es den zweiten Operanden aus und gibt diesen zurück.

+0

@SuperBiasedMan: Die Antwort wurde mit Dokumentationslinks aktualisiert. –

Verwandte Themen