first of all this line

`squares = [xˆ3 for x in range(1,11)]`

well this `ˆ`

is an invalid character and if you intended to use this `^`

then what you would be doing is `performing a binary xor shift of 5`

on each of the values defined(that's what this `^`

does it a bitwise operator) so you are not getting a list of squares

That line should be

`squares = [x**2 for x in range(1,11)]`

Now on this line

`filter(lambda squares: squares[30:70:], squares)`

you you define lambda `with squares as your parameter`

awesome but wait the interpreter will halt here

`squares[30:70:]`

why because this is how list slicing works

```
#x[start:end:stride(or step)]
#where:
#x is a given list
#start is a valid index in the list(int)
#end is a valid index in the list(int)
#stride is an integer that specifies how much i jump each time i am slicing
#for example
x = [x for x in range(10)] # which will be [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# I can get all odds in the list by doing this
print x[1::2]
```

so now your lambda function is giving the wrong indices in the list slicing. it should rather be this

`print filter(lambda x:x >= 30 and x<=70, squares)`