days_of_the_week[14 % 7]

There ya go!


On Wed, Nov 25, 2020 at 12:51 PM Mathew M. Noel via Python-ideas <
python-ideas@python.org> wrote:

> If circular indexing is used then instead of using a double FOR loop to
> go through a list M times we can iterate from 0 to M*N (where N is the
> length of the list) !!!
>
>
> Almost all Machine Learning (ML) algorithms iterate for some predefined
> epochs over a large data-set. So a double FOR loop is extremely common in
> ML. Using circular indexing gets rid of this extra FOR loop. If we have to
> iterate 2 times you can iterate using range(-n,n) but in most cases you
> need to iterate over 10 or more epochs in ML.
>
>
> Most scientific applications of Python involve an outer FOR loop which
> progressively refines an approximation with an inner FOR loop by going
> through a list of items. So circular indexing is useful. In the following I
> discuss increasingly compelling reasons for adopting a circular indexing
> scheme in Python.
>
>
> Python uses an index of -1 to index the last element in a list. Since -1
> occurs before 0 we might think of the elements of the linear list are being
> bent into a circle making the last element occur before the 0th element.
> Consider a list with n elements: it would be perfectly reasonable to
> address the element 0 of the list using an index of n since n occurs after
> n-1 (if we assume that the list is bent into a circle). This feature can
> prove to be extremely useful. Consider the following example:
>
>
> days_of_the_week = 
> ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
>
> It would be nice if
>
> days_of_the_week[0]
>
> is the same as
>
> days_of_the_week[7]
>
> is the same as
>
> days_of_the_week[14] etc
>
> In other words use modular indexing. In other words if the index is outside 
> the range 0 to n-1, we simply take the remainder when the index is divided by 
> n as the index.
> Because of the close relationship between finite length sequences and 
> periodic sequences this feature might simplify scientific computing(circular 
> convolution etc).
>
> If circular indexing is used then we don't need the arbitrary rule that -1
> is the index of the last element. Since -1 is the same as n-1 automatically
> in modular arithmetic.
>
>
> A trivial objection:  "why not use list_name[i%n] whenever we need this
> feature?" By the same token we could do away with negative indices and use
> -1%n for example when we need to index with -1!
>
> Its unclear why that people have an irrational preference for indices
> that lie to the left of 0 while strongly rejecting the idea of indices that
> lie to the right of n-1!
>
> Python does not raise a "index out of bound" exception for negative
> indices like other programming languages. If this negative indexing is a
> "feature" (although it allows some fatal errors to slip) then indices above
> n-1 can also be considered a feature!
>
> Are there any deep mathematical reasons for adopting  circular convention?
> Circular convolution is a most important operation in a wide variety of
> scientific disciplines since the Discrete Fourier Transform (DFT) of the
> circular convolution of two signals is the product of the transforms.
> Because of the universal applicability of Fourier ideas in science and the
> close mathematical relationship between finite length and periodic
> sequences circular indexing is extensively used in signal processing and
> mathematics.
>
> We can extend the idea of circular indexing to multidimensional arrays. A
> 2D array can be folded into a cylinder for indexing. Further this cylinder
> can be folded into a toroid to reduce a triple FOR loop to a single FOR
> loop. A deep mathematical justification for cylindrical indexing of 2D and
> in general nD arrays is offered by the fact that n-dimensional DFT reduces
> n-dimensional circular convolution to element-wise multiplication.
>
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/5TJYKFLBHB26WEFFQXMY6AGWS34XTIUR/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


-- 

CALVIN SPEALMAN

SENIOR QUALITY ENGINEER

cspea...@redhat.com  M: +1.336.210.5107
[image: https://red.ht/sig] <https://red.ht/sig>
TRIED. TESTED. TRUSTED. <https://redhat.com/trusted>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/JX2MJS5Y5GH4DMKGVE6N2GTFAUPCVTRJ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to