如何简化 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)
在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)