对于以下情况,我想问您不同的观点:假设我们有几个列表,对于不为空的列表,应该执行一些操作:
r-markdown
代码本身非常简单易懂,但是对于Mccabe复杂度而言,这将抛出(12)值。要降低此值,您将如何处理?我很愿意听到您的想法。
谢谢。
答案 0 :(得分:0)
如果将所有列表都放在列表列表中:
lol = [l1,l2,l3,l4,l5,l6,l7,l8,l9]
然后您可以遍历列表列表:
for l in lol:
if l:
# do something
答案 1 :(得分:0)
使用列表列表和功能列表
def f1(l1):
# do whatever is required to the l1 list
def f2(l2):
# similarly
# and similarly for f3 .. f9
...
lofl = [ l1, l2, l3, l4, l5, l6, l7, l8, l9 ]
loff = [ f1, f2, f3, f4, f5, f6, f7, f8, f9 ]
for f, l in zip( loff, lofl):
if l: # if the functions f cannot themselves safely do nothing for a falsy argument
f( l)
希望,所需功能的数量略少于九个(在此示例中)。您还可以轻松地向函数传递参数,因此函数可以是通用的,并且可以告诉函数在被称为
时要执行的变体操作for f, l, p in zip( loff, lofl, lofp): # or, zip( loff, lofl, list(range(9)) )
f(l, p)
或者甚至甚至向函数传递任意一组关键字参数
lofargs=[ { 'foo':1, 'bar':'Monty' }, # kwargs for f1
{ 'foo':2, 'bar':'Python'},
{ 'foo':3 },
{}, # no kwargs at all for f4,
...
]
for f, l, k in zip( loff, lofl, lofargs):
f( l, **k )