Just for variety's sake, featuring no itemgetter() call:
map(lambda x: [x[i] for i in (0,2,4)], (s.split() for s in y))
The (0,2,4) could be replaced with range(0,5,2), of course.
For such a small number of items you could just be explicit with: [x[0], x[2], x[4]]
How it works: The lambda function simply returns a list of the desired elements of the list it is passed. The (s.split() for s in y) is a generator that produces split() versions of the items in list y. Driving all this is the call to map() which applies the lambda function to each one of the split() items from y. In Python 2.x it creates a list of the results from each of these calls.
To answer your follow-up question in the comments about using g = lambda x: [x[i] for i in (0,2,4)]
along with (g(s.split()) for s in y) to get rid of map(). That's basically the right idea, but the second expression results in just a generator object. That would need to be wrapped in something like: [g(s.split()) for s in y] to get the result.
If you didn't want to have a separate lambda named g you could use:
[(lambda x: [x[i] for i in (0,2,4)])(s.split()) for s in y]
map; it's almost completely obsoleted by list comprehensions. If you're reading a tutorial that's telling you to use it, it's probably very old and may be teaching you bad habits. The clean way of writing this (starting from @Yuval's answer) is[x.split()[0:5:2] for x in y].