Как сделать последовательность чисел 2 в n-ой степени?

def powers_of_two(n):
    i = 1
    a = []
    for x in range(n):
        a.append(i ** 2)
        i = i + 1
    return a    


print((powers_of_two(0))) #-> [1]))
print((powers_of_two(1))) #-> [1, 2])
print((powers_of_two(4))) #-> [1, 2, 4, 8, 16]) 

Последовательноть должна быть вида (#-> в коментариях в коде): [1, 2, 4, 8, 16]


Ответы (2 шт):

Автор решения: Qwertiy

tio.run

def powers_of_two(n):
  return [1<<i for i in range(n+1)]

print((powers_of_two(0))) # [1]
print((powers_of_two(1))) # [1, 2]
print((powers_of_two(4))) # [1, 2, 4, 8, 16]
→ Ссылка
Автор решения: Сергей

Если исправить код в вопросе:

а) желательно убрать лишнюю переменную,

б) надо расширить диапазон на 1 степень,

в) надо возводить не в квадрат, а в степень.

def powers_of_two(n):
    a = []
    for i in range(n+1):
        a.append(2**i)
    return a

print((powers_of_two(0))) #-> [1]))
print((powers_of_two(1))) #-> [1, 2])
print((powers_of_two(4))) #-> [1, 2, 4, 8, 16])
→ Ссылка