[Python-ideas] Set starting point for itertools.product()

Ronie Martinez ronmarti18 at gmail.com
Thu Oct 25 02:31:05 EDT 2018


Hi Steve,

Here is an example:

import itertools
import time


def main():
    datetime_odometer = itertools.product(
        range(2018, 10_000),  # year
        range(1, 13),  # month
        range(1, 31),  # days
        range(0, 24),  # hours
        range(0, 60),  # minutes
        range(0, 60)  # seconds
    )

    datetime_of_interest = (2050, 6, 15, 10, 5, 0)

    for i in datetime_odometer:
        if i == datetime_of_interest: # target start time
            break


if __name__ == '__main__':
    start = time.time()
    main()
    duration = time.time() - start
    print(duration, 'seconds')  # 91.9426908493042 seconds


It took 92 seconds to get to the target start time. It does not only apply
to datetimes but for other purposes that uses "odometer-like" patterns.

I don't have any propose solution for now, but I guess adding this feature
within itertools will come in handy.

Regards,
Ronie

On Thu, Oct 25, 2018 at 1:49 PM Steven D'Aprano <steve at pearwood.info> wrote:

> On Thu, Oct 25, 2018 at 11:47:18AM +0800, Ronie Martinez wrote:
> > Hi,
> >
> > My idea is to set the starting point for itertools.product()
> > <https://docs.python.org/3.6/library/itertools.html#itertools.product>
> > since it becomes very slow if the point of interest is in the middle. For
> > example when working with datetime tuples with seconds resolution (worst
> > case, milli/microseconds), you need to skip a lot of items.
>
> I don't understand what you mean by "skip a lot of items" or why this
> applies to datetime tuples.
>
> Can you give a SHORT and SIMPLE example, showing both the existing
> solution and your proposed solution?
>
>
>
> --
> Steve
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20181025/f8c250a5/attachment-0001.html>


More information about the Python-ideas mailing list