代码之家  ›  专栏  ›  技术社区  ›  Marco Aurélio Falcão

如何简化对python中发行版的列表理解

  •  1
  • Marco Aurélio Falcão  · 技术社区  · 7 年前

    获取scipy.stats中连续分布的对象 这是示例代码: 获取Ditributions.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)
    

    这段代码有效,但我在列表理解中已经两次调用了getattr。 如何将此代码简化为只调用一个getattr?或者其他解决方案?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Rakesh    7 年前

    你可以用普通的 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)