如何简化 python 中分布的列表理解

How to simplify a list comprehension of distributions in python

在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?或者替代解决方案?

您可以使用常规 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)