On 07/05/2011 02:43, Jon Clements wrote:
On May 7, 12:51 am, Ian Kelly<ian.g.ke...@gmail.com>  wrote:
On Fri, May 6, 2011 at 4:21 PM, Philip Semanchuk<phi...@semanchuk.com>  wrote:
What if it's not a list but a tuple or a numpy array? Often I just want to 
iterate through an element's items and I don't care if it's a list, set, etc. 
For instance, given this function definition --

def print_items(an_iterable):
    if not an_iterable:
        print "The iterable is empty"
    else:
        for item in an_iterable:
            print item

I get the output I want with all of these calls:
print_items( list() )
print_items( tuple() )
print_items( set() )
print_items( numpy.array([]) )

But sadly it fails on iterators:
print_items(xrange(0))
print_items(-x for x in [])
print_items({}.iteritems())

My stab:

from itertools import chain

def print_it(iterable):
     it = iter(iterable)
     try:
         head = next(it)
     except StopIteration:
         print 'Empty'
         return
     for el in chain( (head,), it ):
         print el

Not sure if I'm truly happy with that though.

How about:

def print_items(an_iterable):
    found_item = False
    for item in an_iterable:
        print item
        found_item = True
    if not found_item:
        print "The iterable was empty"

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

Reply via email to