>> foo = [ i for i in bar while len(i)>0 ] Emile> How is this different from: Emile> foo = [ i for i in bar if len(i) ] The first is like: _ = [] for i in bar: if not (len(i) > 0): break _.append(i) return _ The second is like: _ = [] for i in bar: if len(i) > 0: _.append(i) return _ Skip