How do I test if an object is a sequence?

Skip Montanaro skip at pobox.com
Mon Dec 22 15:39:39 CET 2003


    Max> Then there is the approach of testing for a method that they all
    Max> share.  The only one that springs to mind is the slice operation.

    Max> def is_sequence(object)
    Max>      try:
    Max>          test = object[0:0]
    Max>      except:
    Max>          return False
    Max>      else:
    Max>          return True

    Max> But it has the disadvantage that string also are sequences. But not
    Max> exactly the kind I am interrested in.

    Max> So it will need to be expanded to:

    Max> from types import StringTypes
    Max> def is_sequence(unknown):
    Max>      if isinstance(unknown, StringTypes):
    Max>          return False
    Max>      try:
    Max>          test = object[0:0]
    Max>          return True
    Max>      except:
    Max>          return False

    Max> But that looks kind of ugly for a "simple" type check.

    Max> There must be a better way?

Not really.  You're better off testing for whatever operations you want to
perform.  You run the risk of overlapping with mapping objects, but that's
life.

Skip






More information about the Python-list mailing list