actually I think I read somewhere about list comprenhension and equivalents being slightly more efficient than the loops