Python @ DjangoSpin

Python: Naming Slices for Cleaner Code

Buffer this pageShare on FacebookPrint this pageTweet about this on TwitterShare on Google+Share on LinkedInShare on StumbleUpon
Reading Time: 1 minutes

Naming Slices in Python

Naming Slices in Python

The constructor of the builtin slice class creates a slice object, which can be used in places where a slice is normally employed. It is a better alternative to hardcoded slices, especially when they begin to create readability and maintenance issues.

>>> listOfNumbers = [0, 1, 2, 3, 4, 5, 6,7, 8, 9]
>>> TWOtoFOUR = slice(2, 5)									# Slices include elements from starting index to ending index - 1.
>>> TWOtoFOUR
slice(2, 5, None)											# The step size is 0, hence the None.

>>> listOfNumbers[TWOtoFOUR]
[2, 3, 4]
>>> listOfNumbers[2:5]
[2, 3, 4]

>>> listOfNumbers[TWOtoFOUR] = [12, 13, 14]
>>> listOfNumbers
[0, 1, 12, 13, 14, 5, 6, 7, 8, 9]

The slice objects provide three read-only attributes to access the indices individually. These are start, stop & step.

>>> twoToFourWithStepOne = slice(2, 5, 1)
>>> twoToFourWithStepOne.start
2
>>> twoToFourWithStepOne.stop
5
>>> twoToFourWithStepOne.step
1

In addition to these attributes, it also provides a method called indices(). The indices() method is used to map a slice onto a sequence of a specific size. It takes length of the sequence as input and returns a tuple(start, stop, step) in such a manner that out of bounds indices are clipped to fit within bounds.

>>> x = slice(2, 25, 3)
>>> seq = 'Hi, my name is Ethan.'
>>> x.indices(len(seq))
(2, 21, 3)

See also:

Buffer this pageShare on FacebookPrint this pageTweet about this on TwitterShare on Google+Share on LinkedInShare on StumbleUpon

Leave a Reply