Is there any simple way to invert a list slice in python? Give me everything except a slice? For example:
Given the list a = [0,1,2,3,4,5,6,7,8,9]
I want to be able to extract [7,8,9,0,1,2]
i.e. everything but a[3:7].
Thinking about it logically, I thought that a[-3:3] would give me what I want, but it only returns an empty list.
I am preferring a solution which will work for both python 2 and 3
If you're willing to destroy the list (or a copy of it) you can cut out the part you don't want:
The order is not the same as what you asked for, though that might not be important to you.
Slices don't wrap like that, but
a[-3:] + a[:3]
would give you that list.OK, so this may not be exactly what you want, but is useful in some situations where you might want a slice like that.
There are two important disclaimers.
list(set(a).difference(a[3:7]))
Does the order matter?
Itertools is your friend:
Or generally
This is a generator so you can get a list with
list(...)
or just use it in your loop. As a generator, it does not create extra copies of the list, nor destroy the original, etc.