>>> e, f, g = map(list, zip(*a))
[1, 4, 7]
[2, 5, 8]
[3, 6, 9]
There is a lot under the hood for such a simple overall statement. My biggest reservation is steering learners away from naive code before they are ready. One is continually harping about doing everything the naive way, first, and only refactor a step at a time.
# unpack (splat) operator list of lists
# \ /
e, f, g = map ( list, zip(*a) )
# output iterator callback iterable
Many learners are only too happy to ditch the clear naive code for what they imagine to be more elegant or Pythonic. Much of the time they don’t understand it, either, and yet still post it in the forums.