Select discontinuous items or ranges from a Python list
If you need to select several discontinuous items (and/or ranges) from a Python list
, you can use the operator
module’s itemgetter
second-order function. In the realm of lists, it accepts arguments as either integers or slice
objects and returns a function object that when called on a list returns the elements specified.
What? Like this:
>>> from operator import itemgetter >>> get_items = itemgetter(1, 4, 6, slice(8, 12)) >>> get_items <operator.itemgetter object at 0x02160D70> >>> get_items(range(20)) (1, 4, 6, [8, 9, 10, 11])
I’ll leave it as an exercise to the reader to figure out how to flatten the resulting tuple. If it proves challenging, I’d suggest trying some or all of the 99 Prolog Problems (but a list ain’t one?), in Python of course :)
comments powered by Disqus