[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

List mutation method gotcha - How well known?

H J van Rooyen

3/13/2008 7:36:00 AM

Hi,

I am surprised that it took me so long to bloody my nose on this one.

It must be well known - and I would like to find out how well known.

So here is a CLOSED BOOK multiple choice question - no RTFM,
no playing at the interactive prompt:

Given the following three lines of code at the interactive prompt:

foo = [1,2,3,4]
x = foo.append(5)
print x

What will be the output (choose one):

1) [1,2,3,4]
2) [1,2,3,4,5]
3) That famous picture of Albert Einstein sticking out his tongue
4) Nothing - no output
5) None of the above

I undertake to summarise answers posted to complete this "survey".

- Hendrik


20 Answers

cokofreedom

3/13/2008 9:15:00 AM

0

On Mar 13, 8:36 am, "Hendrik van Rooyen" <m...@microcorp.co.za> wrote:
> Hi,
>
> I am surprised that it took me so long to bloody my nose on this one.
>
> It must be well known - and I would like to find out how well known.
>
> So here is a CLOSED BOOK multiple choice question - no RTFM,
> no playing at the interactive prompt:
>
> Given the following three lines of code at the interactive prompt:
>
> foo = [1,2,3,4]
> x = foo.append(5)
> print x
>
> What will be the output (choose one):
>
> 1) [1,2,3,4]
> 2) [1,2,3,4,5]
> 3) That famous picture of Albert Einstein sticking out his tongue
> 4) Nothing - no output
> 5) None of the above
>
> I undertake to summarise answers posted to complete this "survey".
>
> - Hendrik

None is the likely answer as .append is an inplace change and will
return None...

Peter Otten

3/13/2008 9:20:00 AM

0

Hendrik van Rooyen wrote:

> I am surprised that it took me so long to bloody my nose on this one.
>
> It must be well known - and I would like to find out how well known.
>
> So here is a CLOSED BOOK multiple choice question - no RTFM,
> no playing at the interactive prompt:
>
> Given the following three lines of code at the interactive prompt:
>
> foo = [1,2,3,4]
> x = foo.append(5)
> print x
>
> What will be the output (choose one):

I thought it were a FAQ, but found only

http://effbot.org/pyfaq/why-doesn-t-list-sort-return-the-sorte...

I'm sure you can draw the analogy.

Peter

Chris

3/13/2008 9:32:00 AM

0

On Mar 13, 9:36 am, "Hendrik van Rooyen" <m...@microcorp.co.za> wrote:
> Hi,
>
> I am surprised that it took me so long to bloody my nose on this one.
>
> It must be well known - and I would like to find out how well known.
>
> So here is a CLOSED BOOK multiple choice question - no RTFM,
> no playing at the interactive prompt:
>
> Given the following three lines of code at the interactive prompt:
>
> foo = [1,2,3,4]
> x = foo.append(5)
> print x
>
> What will be the output (choose one):
>
> 1)  [1,2,3,4]
> 2)  [1,2,3,4,5]
> 3)  That famous picture of Albert Einstein sticking out his tongue
> 4)  Nothing - no output
> 5)  None of the above
>
> I undertake to summarise answers posted to complete this "survey".
>
> - Hendrik

No output because x is a NoneType...

Diez B. Roggisch

3/13/2008 10:22:00 AM

0

Hendrik van Rooyen wrote:

> Hi,
>
> I am surprised that it took me so long to bloody my nose on this one.
>
> It must be well known - and I would like to find out how well known.
>
> So here is a CLOSED BOOK multiple choice question - no RTFM,
> no playing at the interactive prompt:
>
> Given the following three lines of code at the interactive prompt:
>
> foo = [1,2,3,4]
> x = foo.append(5)
> print x
>
> What will be the output (choose one):
>
> 1) [1,2,3,4]
> 2) [1,2,3,4,5]
> 3) That famous picture of Albert Einstein sticking out his tongue
> 4) Nothing - no output
> 5) None of the above
>
> I undertake to summarise answers posted to complete this "survey".

None, as python chose deliberately to return None on mutating functions like
append, sort and reverse.

Diez

Paul Rubin

3/13/2008 10:42:00 AM

0

"Hendrik van Rooyen" <mail@microcorp.co.za> writes:
> Given the following three lines of code at the interactive prompt:
>
> foo = [1,2,3,4]
> x = foo.append(5)
> print x
>
> What will be the output (choose one):
> 4) Nothing - no output

By Python convention, methods that mutate the object return None, and
also stuff that returns None doesn't generate output at the
interactive prompt.

There is a similar situation with list.sort() which led to the
introduction of the sorted() builtin.

Lately I try to avoid mutation, e.g. by using a generator or listcomp
instead of building up a list with .append()

Bruno Desthuilliers

3/13/2008 10:47:00 AM

0

Hendrik van Rooyen a écrit :
> Hi,
>
> I am surprised that it took me so long to bloody my nose on this one.
>
> It must be well known - and I would like to find out how well known.
>
> So here is a CLOSED BOOK multiple choice question - no RTFM,
> no playing at the interactive prompt:
>
> Given the following three lines of code at the interactive prompt:
>
> foo = [1,2,3,4]
> x = foo.append(5)
> print x
>
> What will be the output (choose one):
>
> 1) [1,2,3,4]
> 2) [1,2,3,4,5]
> 3) That famous picture of Albert Einstein sticking out his tongue
> 4) Nothing - no output
> 5) None of the above

answer 5 - list.append returns None, which when printed gives 'None'.

You'll get the same thing with list.sort, list.extend, list.reverse etc...

Roel Schroeven

3/13/2008 10:47:00 AM

0

Hendrik van Rooyen schreef:
> So here is a CLOSED BOOK multiple choice question - no RTFM,
> no playing at the interactive prompt:
>
> Given the following three lines of code at the interactive prompt:
>
> foo = [1,2,3,4]
> x = foo.append(5)
> print x
>
> What will be the output (choose one):
>
> 1) [1,2,3,4]
> 2) [1,2,3,4,5]
> 3) That famous picture of Albert Einstein sticking out his tongue
> 4) Nothing - no output
> 5) None of the above

Answer 5: the output will be 'None': append() doesn't return the list,
it returns None.

--
The saddest aspect of life right now is that science gathers knowledge
faster than society gathers wisdom.
-- Isaac Asimov

Roel Schroeven

Paul Rubin

3/13/2008 10:49:00 AM

0

Paul Rubin <http://phr.cx@NOSPAM.i... writes:

> "Hendrik van Rooyen" <mail@microcorp.co.za> writes:
> > Given the following three lines of code at the interactive prompt:
> >
> > foo = [1,2,3,4]
> > x = foo.append(5)
> > print x
> >
> > What will be the output (choose one):
> > 4) Nothing - no output

Correction, it will print None, there is an explicit print statement
that went past me. I'm sleepy.

cokofreedom

3/13/2008 10:52:00 AM

0

Still, I suppose this is a gotcha for a lot of people, just follow the
good advice Paul said;
"By Python convention, methods that mutate the object return None, and
also stuff that returns None doesn't generate output at the
interactive prompt."

And you should survive most.

Dustan

3/13/2008 12:42:00 PM

0

On Mar 13, 2:36 am, "Hendrik van Rooyen" <m...@microcorp.co.za> wrote:
> Hi,
>
> I am surprised that it took me so long to bloody my nose on this one.
>
> It must be well known - and I would like to find out how well known.
>
> So here is a CLOSED BOOK multiple choice question - no RTFM,
> no playing at the interactive prompt:
>
> Given the following three lines of code at the interactive prompt:
>
> foo = [1,2,3,4]
> x = foo.append(5)
> print x
>
> What will be the output (choose one):
>
> 1) [1,2,3,4]
> 2) [1,2,3,4,5]
> 3) That famous picture of Albert Einstein sticking out his tongue
> 4) Nothing - no output
> 5) None of the above

5.