"number-in-base" ``oneliner''
Steven Bethard
steven.bethard at gmail.com
Mon Nov 1 02:07:37 EST 2004
More information about the Python-list mailing list
Mon Nov 1 02:07:37 EST 2004
- Previous message (by thread): "number-in-base" ``oneliner''
- Next message (by thread): "number-in-base" ``oneliner''
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Bengt Richter <bokr <at> oz.net> writes: > > BTW, will anything that works in a list comprehension work in a generator > expression (assuming one does not depend on the generator expression having > leftover outside side effect bindings like the LC version)? Well, I'm not confident enough to say *anything* (though I've used them freely in my code since 2.4a1 was released and have never had any problems) but they seem to work for this problem: >>> def number_in_base(n, b=10, digits='0123456789ABCDEF'): ... return '-'[:n<0]+''.join(reversed(list( ... digits[r] ... for q in [abs(n)] ... for q, r in iter(lambda: divmod(q, b), (0, 0))))) or digits[0] ... >>> number_in_base(100, 16) '64' >>> number_in_base(100, 2) '1100100' Of course, you don't really gain anything by doing this with a generator expression since you have to reverse the list. In Python 3000, the list(genexp) syntax will be exactly equivalent to a list comprehension[1], at which point, it won't matter. ;) Steve [1] http://www.python.org/peps/pep-3000.html#core-language
- Previous message (by thread): "number-in-base" ``oneliner''
- Next message (by thread): "number-in-base" ``oneliner''
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list