我正在制作一个适用于聊天文件的程序,其格式如下:
readlines
)/me
命令/me
命令不是在配置文件中有多个开关,而是在循环中进行了大量的if
语句检查,我相信如果我在其他地方生成函数列表然后在程序中输入了dicts列表,程序会更清晰(或字符串,取决于我所在的程序的哪一部分)和一系列函数,以便将函数列表应用于对象列表中的每个项目。
It seems that this probably would be a good case for list comprehensions如果我只对每个项目应用单个函数,但我不想为每个要调用的函数单独传递日志。但是,this answer notes that list comprehension probably aren't what I want, since they return a completely new list,而不是在适当的位置修改。
我最好选择以下两种变体吗?
for item in list:
item = a(b(c(d(item, dparam1, dparam2), cparam)), aparams)
(为了便于阅读,我将每个功能放在自己的行上,如:
for item in list:
item = d(item, dparam1, dparam2)
item = c(item, cparam)
item = b(item)
item = a(item, aparams)
但是,上述内容并不排除对所有开关进行if
检查的必要性,并且不允许在两个不同的地方应用函数a
,除非我明确添加了切换到这样做。
答案 0 :(得分:0)
根据您的示例代码,您可以尝试这种方式,
func_list = [d, c, b, a]
for idx, item in enumerate(item_list):
item_list[idx] = reduce(lambda v, func: func(v), func_list, item)
让每个func处理数据,使循环更像管道。