Consider using a generator instead 'max(b.max() for b in beta.values())'
819 beta_max = (
820 beta.max()
821 if isinstance(returns, _pd.Series)
822 else max([b.max() for b in beta.values()]) 823 )
824 mmin = min([-100, int(beta_min * 100)])
825 mmax = max([100, int(beta_max * 100)])
Consider using a generator instead 'min(b.min() for b in beta.values())'
814 beta_min = (
815 beta.min()
816 if isinstance(returns, _pd.Series)
817 else min([b.min() for b in beta.values()]) 818 )
819 beta_max = (
820 beta.max()
Description
Using a container in place of a generator for a calls that can accept both, slows down the performance. Consider using generators for all function calls which accept both containers and genertors.
Bad practice
# List comprehension is unnecessary here
set([student.name for student in student])
sum([y**2 for y in list(range(10))])
Recommended
set(student.name for student in students)
sum(y**2 for y in list(range(10)))