Как упростить понимание списка дистрибутивов в python - PullRequest
0 голосов
/ 23 мая 2018

Получить объекты для непрерывного распространения в scipy.stats. Это пример кода: getditributions.py

import scipy.stats as st


CONTINUOUS_DISTRIBUTIONS = [getattr(st,d) for d in dir(st) if isinstance(getattr(st,d), st.rv_continuous)]

print ('number of distributions = ', len(CONTINUOUS_DISTRIBUTIONS))

print ('CONTINUOUS_DISTRIBUTIONS = ')
print(CONTINUOUS_ DISTRIBUTIONS)

Obs: этот код работает, но я дважды вызывал getattr в понимании списка.Как упростить этот код, чтобы иметь только один вызов getattr?Или альтернативное решение?

1 Ответ

0 голосов
/ 23 мая 2018

Вы можете использовать обычный for-loop.

Пример:

CONTINUOUS_DISTRIBUTIONS = []
for d in dir(st):
    val = getattr(st,d)     #Store in variable for re-use.
    if isinstance(val, st.rv_continuous):
        CONTINUOUS_DISTRIBUTIONS.append(val)
...