# Python 2, 76 bytes <!-- language-all: lang-python --> lambda l:filter(lambda n:eval(("sum(map(int,`n`))**.5==int("*2)[:-6]+")"),l) [Try it here!][1] Some abuse of eval to check for a square number, rest is pretty unspectacular. The eval statement evaluates to `sum(map(int,`n`))**.5==int(sum(map(int,`n`))**.5)` [1]: https://repl.it/C09S