Quantcast
Channel: Planet Plone - Where Developers And Integrators Write
Viewing all articles
Browse latest Browse all 3535

Reinout van Rees: How to say ``[:]`` programmatically in Python

$
0
0

I had a problem lately for how to pass in : programmatically into a function. I'd need either a specific element or all. Because of the program's structure I really wanted to keep pass it as an argument into a function.

A simplified example:

>>> my_list = range(10)
>>> my_list
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> def selector(index):
...     return my_list[index]
...
>>> selector(0)
0
>>> selector(-1)
9

So how do I say [:]? Some things I tried:

>>> selector(None)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "<console>", line 2, in selector
TypeError: list indices must be integers, not NoneType
>>> selector(':')
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "<console>", line 2, in selector
TypeError: list indices must be integers, not str

The solution: pass a built-in slice object:

>>> selector(slice(None))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Bingo!


Viewing all articles
Browse latest Browse all 3535

Trending Articles