¿Cómo encontrar las palabras de longitud menor o mayor que la media aritmetica de una cadena?
¿Cómo encontrar las palabras de longitud menor o mayor que la media aritmetica de una cadena `S`?

ls, ts = zip(*sorted([(len(x), x) for x in S.split()]))

avlen = sum(ls) / len(ls)  

bpoint = bisect.bisect_right(ls, avlen)  
print('mayores:', *ts[bpoint:])
print('menores:', *ts[:bpoint])