and [True,True] --> [True, True]?????

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Fri Apr 24 07:17:26 EDT 2009


On Fri, 24 Apr 2009 03:22:50 -0700, Paul Rubin wrote:

> Steven D'Aprano <steve at REMOVE-THIS-cybersource.com.au> writes:
>> len() works on dicts and sets, and they're not sequences.
> 
> Of course dicts and sets are sequences.

Dicts and sets are explicitly described as "other containers":

http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-
list-tuple-buffer-xrange

Note that addition is included in the table of sequence operations, but 
neither dicts nor sets support it:

>>> {} + {}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'

Nor do they support slicing.


> But there are also sequences on which len doesn't work.
>
> You could use:  sum(1 for x in seq)
> Of course iterating through seq may have undesired side effects.

It's also not guaranteed to terminate.

Well, technically no user-defined function is guaranteed to terminate, 
but you know what I mean :)




-- 
Steven



More information about the Python-list mailing list