Ruby defines 'map', 'each', and other iteration utilities as higher order functions. This means that, while it works for tuples, this does not for looping.
> Why does _ need to be special cased like this? In Python this works with any variable name.
To, in general, make giving multiple arguments for a function or block/lambda the same name a syntax error.
Python special-cases generators, but having multiple identical argument names for a function in Python is a syntax error.
Ruby is a bit more 'regular' in that in both blocks/lambdas and functions, reusing an argument name is always an error. '_' then functions not as a name but a special 'disregard' symbol.
Python also supports the '_' character in that same manner. It's just a legal variable name that is given special meaning when in the interactive interpreter.
>>> p = { "Alice": ["g", 1, "a@a"], "Bob": ["b", 2, "b@b"]}
>>> [(name, email) for name, (_, _, email) in p.iteritems()]
[('Bob', 'b@b'), ('Alice', 'a@a')]
e.g.