Re: Please provide a better explanation of tuples and dictionaries

2013-02-02 Thread Rick Johnson


# Quote: Daniel Rouse Jr.  #

# To me, this looks like an array. Is tuple just the   #
# Python name for an array?#


The problem with understanding Python collections is directly due to improper 
naming. 

First let's consider the sequence types list and tuple. For the most part 
lists and tuples are exactly the same. They are both containers for holding 
values. 

GvR wisely choose to borrow the English word list over the esoteric CS term 
array, but he /unwisely/ choose to borrow the maths term tuple over 
something more self-documenting to describe what is basically an immutable list.

Even someone who has no programming experience could most probably intuit what 
a Python list /is/. Everyone has made a grocery list, or a to-do list. The 
transformation from a tangible object like: *a linear list of items written on 
paper* to an intangible object like: *a Python list holding N objects* is not 
very difficult fathom. HOWEVER, then along comes the seemingly innocent tuple 
with fiery red hair and that devilish little grin intent on screwing up the 
whole logical flea circus!

Now you may ask yourself: 

  WHAT THE HELL IS A TUPLE? AND WHERE DID THIS ESOTERIC TERM ORIGINATE! 

And if you ask the oracle (aka: Google) you might get this answer:

*Google Said:* /In mathematics and computer science, a tuple is an ordered 
list of elements. In set theory, an (ordered) n-tuple is a sequence (or ordered 
list) of n elements, where n is a non-negative integer. /

Okay google, so a tuple is an /ordered set/ and a list is an /ordered 
collection/, got it, (and thanks GvR for the mental overload!) however the 
names fail to convey this VERY important piece of information 

For the fix, it would seem logical to simply extend the term list in a manner 
that will convey a set relationship. DynamicList and StaticList fit the 
bill HOWEVER these terms are FAR to verbose to use on a daily basis!  Now, we 
could naively use list for an ordered collection, and staticlist for an 
ordered set, HOWEVER even this is a foolish choice!

The final solution is NOT two different types with verbose names, NO, the 
solution is ONE ordered collection type with a method to convert it into an 
ordered set. Observe:

py list = list()
py list.extend([1,2,3])
[1,2,3]
py list.append('logical')
[1,2,3,'logical']
py staticList = list.freeze()
py staticList[-1]
'logical'
py staticList.append('error')
Traceback (most recent call last):
  File pyshell#1, line 1, in module
staticList.append('error')
AttributeError: 'StaticList' object has no attribute 'append'

*school-bell*
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Please provide a better explanation of tuples and dictionaries

2013-02-02 Thread Michael Torrie
On 02/02/2013 10:20 PM, Rick Johnson wrote:
 *school-bell*

I'm already regretting typing this, but really?  The term, tuple, was
used rather consistently all through my university years.  And Python's
use of it is consistent with how it is used all through computer
science.  And for that matter it is consistent with how other languages,
including LISP(!), use the term.  As you say, we borrow it from Math.
And for good reason.

Now I know they say that foolish consistency is the hobgoblin of little
minds, but using the word, tuple, in this consistent way is hardly
foolish.  In this case, as is usually the case with your strange
criticisms of well-established practice, there are good reasons for it.

TL;DR: I find your list freezing proposal to be needlessly complicated.
 No the burden of proof is not on me to explain why tuples are so.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Please provide a better explanation of tuples and dictionaries

2013-02-02 Thread Chris Angelico
On Sun, Feb 3, 2013 at 6:14 PM, Michael Torrie torr...@gmail.com wrote:
 TL;DR: I find your list freezing proposal to be needlessly complicated.
  No the burden of proof is not on me to explain why tuples are so.

We have a list-freezing mechanism already.

 list=[1,2,3,'logical']
 staticList=tuple(list)

Et voila! Looks fine to me.

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Please provide a better explanation of tuples and dictionaries

2013-01-30 Thread rusi
On Jan 30, 7:55 am, Daniel W. Rouse Jr.
dwrous...@nethere.comNOSPAM wrote:
 Or, can an anyone provide an example of
 more than a three-line example of a tuple or dictionary?

Have you seen this byt the creator of python -- GvR?
http://www.python.org/doc/essays/graphs.html

 I have recently started learning Python (2.7.3) but need a better
 explanation of how to use tuples and dictionaries.

This is an important question: To start off you need to digest whats
the diff between value oriented and object oriented. Since this is
more to do with paradigm than with a specific language you may read
for example:
http://www.haskell.org/haskellwiki/The_Monad.Reader/Issue3/Functional_Programming_vs_Object_Oriented_Programming

In the python data structure world:
value | object
tuple | list
XX| dictionary
frozen-set | set



 I am currently using Learning Python by Mark Lutz and David Ascher,
 published by O'Reilly (ISBN 1-56592-464-9)--but I find the explanations
 insufficient and the number of examples to be sparse. I do understand some
 ANSI C programming in addition to Python (and the book often wanders off
 into a comparison of C and Python in its numerous footnotes), but I need a
 better real-world example of how tuples and dictionaries are being used in
 actual Python code.

 Any recommendations of a better book that doesn't try to write such compact
 and clever code for a learning book?

 The purpose of my learning Python in this case is not for enterprise level
 or web-based application level testing at this point. I initially intend to
 use it for Software QA Test Automation purposes.

 Thanks in advance for any replies.

-- 
http://mail.python.org/mailman/listinfo/python-list


Please provide a better explanation of tuples and dictionaries

2013-01-29 Thread Daniel W. Rouse Jr.

Hi all,

I have recently started learning Python (2.7.3) but need a better 
explanation of how to use tuples and dictionaries.


I am currently using Learning Python by Mark Lutz and David Ascher, 
published by O'Reilly (ISBN 1-56592-464-9)--but I find the explanations 
insufficient and the number of examples to be sparse. I do understand some 
ANSI C programming in addition to Python (and the book often wanders off 
into a comparison of C and Python in its numerous footnotes), but I need a 
better real-world example of how tuples and dictionaries are being used in 
actual Python code.


Any recommendations of a better book that doesn't try to write such compact 
and clever code for a learning book? Or, can an anyone provide an example of 
more than a three-line example of a tuple or dictionary?


The purpose of my learning Python in this case is not for enterprise level 
or web-based application level testing at this point. I initially intend to 
use it for Software QA Test Automation purposes.


Thanks in advance for any replies. 


--
http://mail.python.org/mailman/listinfo/python-list


Re: Please provide a better explanation of tuples and dictionaries

2013-01-29 Thread Chris Angelico
On Wed, Jan 30, 2013 at 1:55 PM, Daniel W. Rouse Jr.
dwrousejr@nethere.comnospam wrote:
 I am currently using Learning Python by Mark Lutz and David Ascher,
 published by O'Reilly (ISBN 1-56592-464-9)--but I find the explanations
 insufficient and the number of examples to be sparse. I do understand some
 ANSI C programming in addition to Python (and the book often wanders off
 into a comparison of C and Python in its numerous footnotes), but I need a
 better real-world example of how tuples and dictionaries are being used in
 actual Python code.

Have you checked out the online documentation at
http://docs.python.org/ ? That might have what you're looking for.

By the way, you may want to consider learning and using Python 3.3
instead of the older branch 2.7; new features are only being added to
the 3.x branch now, with 2.7 getting bugfixes and such for a couple of
years, but ultimately it's not going anywhere. Obviously if you're
supporting existing code, you'll need to learn the language that it
was written in, but if this is all new code, go with the recent
version.

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Please provide a better explanation of tuples and dictionaries

2013-01-29 Thread Daniel W. Rouse Jr.
Chris Angelico ros...@gmail.com wrote in message 
news:mailman.1197.1359515470.2939.python-l...@python.org...

On Wed, Jan 30, 2013 at 1:55 PM, Daniel W. Rouse Jr.
dwrousejr@nethere.comnospam wrote:

I am currently using Learning Python by Mark Lutz and David Ascher,
published by O'Reilly (ISBN 1-56592-464-9)--but I find the explanations
insufficient and the number of examples to be sparse. I do understand 
some

ANSI C programming in addition to Python (and the book often wanders off
into a comparison of C and Python in its numerous footnotes), but I need 
a
better real-world example of how tuples and dictionaries are being used 
in

actual Python code.


Have you checked out the online documentation at
http://docs.python.org/ ? That might have what you're looking for.

I'll check the online documentation but I was really seeking a book 
recommendation or other offline resource. I am not always online, and often 
times when I code I prefer local machine documentation or a book. I do also 
have the .chm format help file in the Windows version of Python.



By the way, you may want to consider learning and using Python 3.3
instead of the older branch 2.7; new features are only being added to
the 3.x branch now, with 2.7 getting bugfixes and such for a couple of
years, but ultimately it's not going anywhere. Obviously if you're
supporting existing code, you'll need to learn the language that it
was written in, but if this is all new code, go with the recent
version.

Honestly, I don't know what code is being supported. I've just seen enough 
test automation requirements calling for Python (in addition to C# and perl) 
in some of the latest job listings that I figured I better get some working 
knowledge of Python to avoid becoming obsolete should I ever need to find 
another job. 


--
http://mail.python.org/mailman/listinfo/python-list


Re: Please provide a better explanation of tuples and dictionaries

2013-01-29 Thread Chris Angelico
On Wed, Jan 30, 2013 at 2:42 PM, Daniel W. Rouse Jr.
dwrousejr@nethere.comnospam wrote:
 Chris Angelico ros...@gmail.com wrote in message
 news:mailman.1197.1359515470.2939.python-l...@python.org...
 Have you checked out the online documentation at
 http://docs.python.org/ ? That might have what you're looking for.

 I'll check the online documentation but I was really seeking a book
 recommendation or other offline resource. I am not always online, and often
 times when I code I prefer local machine documentation or a book. I do also
 have the .chm format help file in the Windows version of Python.

Ah. I think the tutorial's in the chm file, but I'm not certain. But
for actual books, I can't point to any; I learned from online info
only, never actually sought a book (in fact, the last time I used
dead-tree reference books was for C and C++). Sorry!

 By the way, you may want to consider learning and using Python 3.3
 instead of the older branch 2.7...

 Honestly, I don't know what code is being supported. I've just seen enough
 test automation requirements calling for Python (in addition to C# and perl)
 in some of the latest job listings that I figured I better get some working
 knowledge of Python to avoid becoming obsolete should I ever need to find
 another job.

A fair point. In that case, it's probably worth learning both; they're
very similar. Learn either one first, then master the differences.

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Please provide a better explanation of tuples and dictionaries

2013-01-29 Thread Mitya Sirenef

On 01/29/2013 09:55 PM, Daniel W. Rouse Jr. wrote:

Hi all,


 I have recently started learning Python (2.7.3) but need a better 
explanation of how to use tuples and dictionaries.


 I am currently using Learning Python by Mark Lutz and David Ascher, 
published by O'Reilly (ISBN 1-56592-464-9)--but I find the explanations 
insufficient and the number of examples to be sparse. I do understand 
some ANSI C programming in addition to Python (and the book often 
wanders off into a comparison of C and Python in its numerous 
footnotes), but I need a better real-world example of how tuples and 
dictionaries are being used in actual Python code.


 Any recommendations of a better book that doesn't try to write such 
compact and clever code for a learning book? Or, can an anyone provide 
an example of more than a three-line example of a tuple or dictionary?


 The purpose of my learning Python in this case is not for enterprise 
level or web-based application level testing at this point. I initially 
intend to use it for Software QA Test Automation purposes.


 Thanks in advance for any replies.


It's not finished yet, but you may find my text-movie tutorial on
dicts useful:

http://lightbird.net/larks/tmovies/dicts.html

 -m



--
Lark's Tongue Guide to Python: http://lightbird.net/larks/

Idleness is the mother of psychology.  Friedrich Nietzsche

--
http://mail.python.org/mailman/listinfo/python-list


Re: Please provide a better explanation of tuples and dictionaries

2013-01-29 Thread John Gordon
In hkcdnwgroqkwfpxmnz2dnuvz_qadn...@o1.com Daniel W. Rouse Jr. 
dwrousejr@nethere.comNOSPAM writes:

 I have recently started learning Python (2.7.3) but need a better 
 explanation of how to use tuples and dictionaries.

A tuple is a linear sequence of items, accessed via subscripts that start
at zero.

Tuples are read-only; items cannot be added, removed, nor replaced.

Items in a tuple need not be the same type.

Example:

 my_tuple = (1, 5, 'hello', 9.)
 print my_tuple[0]
1
 print my_tuple[2]
hello

A dictionary is a mapping type; it allows you to access items via a
meaningful name (usually a string.)

Dictionaries do not preserve the order in which items are created (but
there is a class in newer python versions, collections.OrderedDict, which
does preserve order.)

Example:

 person = {} # start with an empty dictionary
 person['name'] = 'John'
 person['age'] = 40
 person['occupation'] = 'Programmer'
 print person['age']
40

Dictionaries can also be created with some initial values, like so:

 person = { 'name': 'John', 'age': 40, 'occupation' : 'Programmer' }

-- 
John Gordon   A is for Amy, who fell down the stairs
gor...@panix.com  B is for Basil, assaulted by bears
-- Edward Gorey, The Gashlycrumb Tinies

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Please provide a better explanation of tuples and dictionaries

2013-01-29 Thread Daniel W. Rouse Jr.
John Gordon gor...@panix.com wrote in message 
news:keaa9v$1ru$1...@reader1.panix.com...
In hkcdnwgroqkwfpxmnz2dnuvz_qadn...@o1.com Daniel W. Rouse Jr. 
dwrousejr@nethere.comNOSPAM writes:



I have recently started learning Python (2.7.3) but need a better
explanation of how to use tuples and dictionaries.


A tuple is a linear sequence of items, accessed via subscripts that start
at zero.

Tuples are read-only; items cannot be added, removed, nor replaced.

Items in a tuple need not be the same type.

Example:

my_tuple = (1, 5, 'hello', 9.)
print my_tuple[0]
   1
print my_tuple[2]
   hello


To me, this looks like an array. Is tuple just the Python name for an array?


A dictionary is a mapping type; it allows you to access items via a
meaningful name (usually a string.)

Dictionaries do not preserve the order in which items are created (but
there is a class in newer python versions, collections.OrderedDict, which
does preserve order.)

Example:

person = {} # start with an empty dictionary
person['name'] = 'John'
person['age'] = 40
person['occupation'] = 'Programmer'
print person['age']
   40

Dictionaries can also be created with some initial values, like so:

person = { 'name': 'John', 'age': 40, 'occupation' : 'Programmer' }

Thank you, I understand it better it is kind of like a hash table. 


--
http://mail.python.org/mailman/listinfo/python-list


Re: Please provide a better explanation of tuples and dictionaries

2013-01-29 Thread Chris Angelico
On Wed, Jan 30, 2013 at 5:14 PM, Daniel W. Rouse Jr.
dwrousejr@nethere.comnospam wrote:
 To me, this looks like an array. Is tuple just the Python name for an array?

Not quite. An array is closer to a Python list - a tuple can be
thought of as a frozen list, if you like. Lists can be added to,
removed from, and changed in many ways; tuples are what they are, and
there's no changing them (the objects inside it could be changed, but
WHAT objects are in it won't).

Python has no strict match to a C-style array with a fixed size and
changeable members; a Python list is closest to a C++ std::vector, if
that helps at all.

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Please provide a better explanation of tuples and dictionaries

2013-01-29 Thread Steven D'Aprano
On Tue, 29 Jan 2013 22:14:42 -0800, Daniel W. Rouse Jr. wrote:

 John Gordon gor...@panix.com wrote in message
 news:keaa9v$1ru$1...@reader1.panix.com...

 A tuple is a linear sequence of items, accessed via subscripts that
 start at zero.

 Tuples are read-only; items cannot be added, removed, nor replaced.

 Items in a tuple need not be the same type.

 Example:

 my_tuple = (1, 5, 'hello', 9.)
 print my_tuple[0]
1
 print my_tuple[2]
hello

 To me, this looks like an array. Is tuple just the Python name for an
 array?

Absolutely not. Arrays can be modified in place. Tuples cannot. Arrays 
can be resized (depending on the language). Tuples cannot. Arrays are 
normally limited to a single data type. Tuples are not.

Python lists are closer to arrays, although the array type found in the 
array module is even closer still.

You create lists either with the list() function, or list builder 
notation using [ ].

Tuples are intended to be the equivalent of a C struct or Pascal record. 
Lists are very roughly intended to be somewhat close to an array, 
although as I said the array.py module is even closer.


 A dictionary is a mapping type; it allows you to access items via a
 meaningful name (usually a string.)
[...]
 Thank you, I understand it better it is kind of like a hash table.

Correct. Also known as associative array.


-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list