empty clause of for loops

Peter Otten __peter__ at web.de
Wed Mar 16 06:47:31 EDT 2016


Sven R. Kunze wrote:

> Hi,
> 
> a colleague of mine (I write this mail because I am on the list) has the
> following issue:
> 
> 
> for x in my_iterable:
>      # do
> empty:
>      # do something else
> 
> 
> What's the most Pythonic way of doing this?

What would you expect?

>>> class Empty(Exception): pass
... 
>>> def check_empty(items):
...     items = iter(items)
...     try:
...         yield next(items)
...     except StopIteration:
...         raise Empty
...     yield from items
... 
>>> try:
...    for item in check_empty("abc"): print(item)
... except Empty: print("oops")
... 
a
b
c
>>> try:
...    for item in check_empty(""): print(item)
... except Empty: print("oops")
... 
oops

I'm kidding, of course. Keep it simple and use a flag like you would in any 
other language:

empty = True:
for item in items:
    empty = False
    ...
if empty:
    ...




More information about the Python-list mailing list