Понимание списка Python - PullRequest
       10

Понимание списка Python

0 голосов
/ 27 сентября 2018

Я изучаю списки Python3.Я понимаю, как форматировать представление списка: [уравнение для цикла, оператор if для фильтрации], но я не могу понять, как сжать три строки кода в одно уравнение для части «уравнения».

Я беру число и добавляю его к себе, а затем беру результат и добавляю его к себе и так далее, чтобы создать последовательность чисел в списке.

Я могу сделать этообъявив x = 1, а затем повторив следующее:

y = x + x

x = y

Может кто-нибудь помочь мне превратить это в уравнение с одной линией иесли возможно, ресурсы, которые я мог бы изучить, чтобы помочь мне с этим в будущем?

1 Ответ

0 голосов
/ 27 сентября 2018

Ваш алгоритм эквивалентен умножению на степени 2:

x = 3
res = [x * 2**i for i in range(10)]

# [3, 6, 12, 24, 48, 96, 192, 384, 768, 1536]

Чтобы понять, почему это так, обратите внимание, что вы умножаете свое стартовое число на 2 в каждой итерации цикла for:

x = 3
res = [x]
for _ in range(9):
    y = x + x
    x = y
    res.append(y)

print(res)

# [3, 6, 12, 24, 48, 96, 192, 384, 768, 1536]

Как упоминает @timgeb, вы не можете ссылаться на элементы вашего списка по мере продвижения, поскольку они недоступны до тех пор, пока понимание не будет завершено.

...