Lichen

lib/__builtins__/iteration/enumeration.py

858:8f8361de472a
2018-07-21 Paul Boddie Invocations in parameter lists may require temporary storage for contexts and accessors, but the storage locations must be different. Otherwise, the code will generate a sequence-point warning. Here, distinct ranges for parameters in lists are introduced, and accessors are now also stored in arrays, permitting distinct storage.
     1 #!/usr/bin/env python     2      3 """     4 Enumeration-related functions.     5      6 Copyright (C) 2015, 2016, 2017 Paul Boddie <paul@boddie.org.uk>     7      8 This program is free software; you can redistribute it and/or modify it under     9 the terms of the GNU General Public License as published by the Free Software    10 Foundation; either version 3 of the License, or (at your option) any later    11 version.    12     13 This program is distributed in the hope that it will be useful, but WITHOUT    14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    15 FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more    16 details.    17     18 You should have received a copy of the GNU General Public License along with    19 this program.  If not, see <http://www.gnu.org/licenses/>.    20 """    21     22 def enumerate(iterable, start=0):    23     24     """    25     Iterate over 'iterable', obtaining items and combining them with position    26     information, producing a sequence containing tuples of the form    27     (position, item). The first position is indicated by 'start' (which is zero    28     by default) and each subsequent positions is incremented from the one    29     preceding it.    30     """    31     32     l = []    33     pos = start    34     35     for i in iterable:    36         l.append((pos, i))    37         pos += 1    38     39     return l    40     41 # vim: tabstop=4 expandtab shiftwidth=4