Как обновить переменную, используемую для генерации значения внутри списка? - PullRequest
0 голосов
/ 27 апреля 2020

В настоящее время у меня есть al oop, который выглядит следующим образом:

payoffs =[[0 1 1 0 1 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 0 1 0 1 1 1 0]
          [1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1]]
n= 30
actions = [0 for _ in range(n)]
for i in range(n):
            actions[i] = some_function(n, cumulative_payouts)
            cumulative_payoffs += payoffs[:, i]

Есть ли еще pythoni c способ сделать это с помощью списочных представлений, который позволяет обновлять cumulative_payoffs вместе с l oop * * 1004

1 Ответ

0 голосов
/ 27 апреля 2020

Вот один из способов:

actions = []
for payoff in payoffs.T:
    actions.append(self.generate_action(n=n, cumulative_payoffs=cumulative_payoffs))
    cumulative_payoffs += payoff

Это может быть сжато в Python 3.8 с использованием выражения присваивания, но читаемость страдает, и я лично не фанат:

actions = [
    self.generate_action(
        n=n,
        cumulative_payoffs=(cumulative_payoffs := cumulative_payoffs + payoff)
    )
    for payoff in payoffs.T
]

Вероятно, есть хороший numpy способ создать массив cumulative_payoffs без al oop, и тогда понимание списка станет проще.

...