preferring [] or () in list of error codes?

Ben Finney ben+python at benfinney.id.au
Mon Jun 8 19:43:45 EDT 2009


mh at pixar.com writes:

> Is there any reason to prefer one or the other of these statements?
> 
>         if e.message.code in [25401,25402,25408]:
>         if e.message.code in (25401,25402,25408):
> 
> I'm currently using [], but only coz I think it's prettier
> than ().

Use a list when the semantic meaning of an item doesn't depend on all
the other items: it's “only” a collection of values.

Your list of message codes is a good example: if a value appears at
index 3, that doesn't make it mean something different from the same
value appearing at index 2.


Use a tuple when the semantic meaning of the items are bound together,
and it makes more sense to speak of all the items as a single structured
value.

The classic examples are point coordinates and timestamps: rather than a
collection of values, it makes more sense to think of each coordinate
set or timestamp as a single complex value. The value 7 appearing at
index 2 would have a completely different meaning from the value 7
appearing at index 3.


James Tauber explains this at
<URL:http://jtauber.com/blog/2006/04/15/python_tuples_are_not_just_constant_lists/>.

-- 
 \       “Pinky, are you pondering what I'm pondering?” “Well, I think |
  `\              so, Brain, but pantyhose are so uncomfortable in the |
_o__)                              summertime.” —_Pinky and The Brain_ |
Ben Finney



More information about the Python-list mailing list