This is called imperative programming: for it in x: ... if it.strip() != '': ... print ("Ok") This is called functional programming: >>> [y for y in x if y.strip() != ''] ['x1', 'x2', 'x3'] What you have is a confusion: print is imperative comprehension is functional You should not mix them like that