Difference between these two lists?

Roy Smith roy at panix.com
Mon Jan 7 20:24:01 EST 2013


In article <700d2bd9-e1df-4d38-81c7-77029a36c47a at googlegroups.com>,
 andydtaylor at gmail.com wrote:

> Hi,
> 
> Python newbie here again - this is probably a quick one. What's the 
> difference between the lines I've numbered 1. and 2. below, which produce the 
> following results: 
> 
> Results:
> 1. [ANG, BAR, BPK, CTN, QGH, QHD, KXX]
> 2. ['ANG', 'BAR', 'BPK', 'CTN', 'QGH', 'QHD', 'KXX']
> 
> Code:
>    cursor_from.execute('SELECT * FROM tubestations LIMIT 1000')
>    
>    stn_list_short = []
>    for row in cursor_from:
>       if row[4]:
> 	# Station values for database
> 	stn_list_short.append(row[5])
> 
>    1. print stn_fields = '[%s]' % ', '.join(map(str, stn_list_short))  
>    2. print stn_list_short

Hi Andy,

You should try to reduce this down to some minimal test case.  In this 
case, the database code has nothing to do with it, it's purely a matter 
of how a list of strings is printed.

When you print a list, the repr() of each list element is printed.  The 
repr() of a string includes quotes.  For example:

>>> print str("foo")
foo
>>> print repr("foo")
'foo'

I'm not sure what "map(str, stn_list_short)" is all about.  I'm assuming 
stn_list_short is already a string, so that's a no-op.

In general, the best way to ask about code is to cut-and-paste the exact 
code that you ran.  You didn't run:

>    1. print stn_fields = '[%s]' % ', '.join(map(str, stn_list_short))  
>    2. print stn_list_short

because those are syntax errors.  I understand you were just trying to 
annotate your code to make it easier to explain.  A better way to do 
that would be to comment your code, something like:

>    print stn_fields = '[%s]' % ', '.join(map(str, stn_list_short))  # line 1
>    print stn_list_short  # line 2

Now you've got something which runs, and can be cut-and-pasted 
unmodified into your posting.  That reduces the chance of confusion.



More information about the Python-list mailing list