## DEV Community is a community of 553,092 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

# Discussion on: Narcissistic number

## Replies for: Here is a little implementation in Python3.6: def is_narcissistic(nb: int) -> bool: return nb == sum([int(c)**len(str(nb)) for c in str(n... Tata Ganesh

I have one doubt though. Wouldn't it be better to first convert `nb` into a string, and then just pass the string to the list comprehension, instead of doing `str(nb)` for every iteration? That is,

``````str_nb = str(nb)
return nb == sum(int(c)**len(str_nb) for c in str_nb)
``````

This might be a little more efficient. Also, we can remove the list comprehension inside and replace it with a generator. Paul van der Sluis

This is fun! Here is a Python 3.5 one-liner with only one calculation of the length of nb per nb :

print([nb for nb in range(10000) if nb == sum(int(c)**l for l in [len(str(nb))] for c in str(nb))])

And now with also one conversion of str(nb) per nb:

print([nb for nb in range(10000) if nb == sum(int(c)**l for str_nb in [str(nb)] for l in [len(str_nb)] for c in str_nb)])