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!