I would say that your current method works fine, but you can lose the list() call, since str.join() will take any iterations:
def binary_reverse(num): return int(''.join(reversed(bin(num)[2:])), 2)
It is also not recommended to use lambda for anything other than the simplest of functions, where it will be used only once and will make the surrounding code more clear, being built-in.
The reason I feel this is normal as it describes what you want to do is take the binary representation of the number, cancel it, and then get the number again. This makes this code very readable, and this should be a priority.
source share