Jaki jest sens firstindex w Julii?

36

Z dokumentacji wynika, że firstindex () znajduje pierwszy indeks kolekcji. Dlaczego nie użyć 1? Co może być, gdy nie jest to 1?

Alexey Petrushin
źródło

Odpowiedzi:

47

Pierwszy indeks niekoniecznie ma wartość 1, ponieważ Julia obsługuje indeksowanie niestandardowe . Aby zrozumieć, dlaczego jest to przydatne, nie możesz pobić postu Tima Holy na blogu .

Niestandardowe indeksy pozwalają na kodowanie informacji o twoich danych w samym wzorcu indeksowania : czasami bardziej naturalne jest rozpoczęcie liczenia od jednego, czasem od zera, a czasem od bardziej dowolnej liczby.

Innym razem, na przykład podczas pisania ogólnych algorytmów, tak naprawdę nie zależy ci na konkretnym indeksie. W takim przypadku można użyć abstrakcje takie jak firstindex, lastindexi eachindex.

Najczęściej lepiej unikać całkowitego odwoływania się do indeksu i po prostu iterować elementy kolekcji (np for x in xs.).

Julia pozwala Ci stosować najbardziej efektywną strategię dla twoich danych.

David Varela
źródło
„W takim przypadku możesz użyć abstrakcji, takich jak firstindex, lastindexi eachindex. Można powiedzieć, że Julia ustanawia dla ciebie standardy ...
Vector Sigma
1
Czy możesz dodać linki do dokumentacji dla firstindex (), lastindex () i eachindex ()?
Peter Mortensen
14

Istnieją specjalne typy tablic, takie jak na przykład OffsetArrays.jl, które mogą mieć dowolne indeksy.

crstnbr
źródło