> -lambdas can thus contain any expression
why would you want to use lambdas if you have generator expressions? eg:
map(lambda c: c.strip(), countries.split(','))
vs
[c.strip() for c in countries.split(',')]
IMHO the latter one is way more readable and generators cover almost all the use cases for lambdas. If you could not do it with a generator expression and choose to use a anonymous function it should have been a method anyway.
> -much bigger range of built-in methods and classes (all permutations of a list, removing duplicates from a list, Rational class, Regexp class, Range class, etc.)
you mean sets, dictionaries(hashtables) etc.? those are built in as well in Python.
Remove duplicates: mylist = list(set(mylist))
Range class: [i for i in range(10)]
you can import the rational class via a simple from fractions import Fraction
same for regex
> -more flexible syntax and "control operators" like each_with_index
you can iterate over dictionaries with for k,v in dict.items()
if you need the index of a list you can use for i,v in enumerate(list)
personally I don't think there is much of a difference between Python and Ruby. One is more mature the other is way hipper and it comes down personal taste which one you choose.