[Tutor] Function for converting ints from base10 to base2?
Terry Carroll
carroll at tjc.com
Thu Feb 22 03:34:12 CET 2007
On Wed, 21 Feb 2007, Dick Moores wrote:
> But there's syntax(?) there I've never seen before. "['','-'][n<0]".
> I see it works:
>
> >>> n = -6
> >>> ['','-'][n<0]
> '-'
> >>> n = 98
> >>> ['','-'][n<0]
> ''
>
> What's this called? I'd like to look it up.
It's nothing special; it's just a lookup in a list.
First, there's a list of strings; the two strings are an empty string ''
and a minus sign '-'. That's this part: ['','-']
If n is less than zero, I want to pick up the minus sign; otherwise, I
want to pick up the empty string.
The expression n<0 evaluates to the boolean True for the first case, and
False otherwise. When using a boolean as an index in a list, True is
treated as 1; False is treated as 0. This is the only arguably tricky
part, if you've never played with booleans; it's documented at
http://docs.python.org/ref/types.html: "Boolean values [False and True]
behave like the values 0 and 1, respectively, in almost all contexts...".
That's this part: [n<0]
So:
sign = ['','-'][n<0]
is more or less the equivalent of:
signlist = ['','-']
if n < 0:
sign = signlist[1]
else:
sign = signlist[0]
More information about the Tutor
mailing list