str_0.encode("utf-8") returns a bytes object, which has a decode method, but when you turn it into a list, it becomes a list on ints. Just keep it as a bytes object:
my_bytes = str_0.encode("utf-8")
print (my_bytes.decode("cp437")) #prints abc
Even more simply:
print(str_0.encode("utf-8").decode("cp437"))
As an added benefit, there is no need for using decode in a loop -- the entire bytes object can be decoded at once.
If you wanted to keep your original lst_decimal and do what you were trying to do, your loop could look like:
for i in lst_decimal:
print(bytes([i]).decode("cp437"))
list() turns a bytes object into a list of ints, and bytes goes backwards. Note, however that simply bytes(i) returns a list of i bytes, each initialized to 0.