如何找到列表中的函数(Python)

时间:2017-02-08 18:53:28

标签: python

我有一个功能列表已保存但未运行。 我需要遍历这个列表,看看我正在寻找的其中一个项目是否存在于列表中。

我该怎么做?

以下是如何存储功能。

self.pysat_fun.set_fun_list(self.pysat_fun.set_file_outpath)  # add this function to the pysat list to be run

def set_fun_list(self, fun, replacelast=False):
    if replacelast:
        self.fun_list[-1] = fun
    else:
        self.fun_list.append(fun)

您可以在下面看到列表中包含的内容。 enter image description here

这是我的尝试。

    for i in range(0, len(self.fun_list)):
        if pysat_func.do_norm in self.fun_list:
            print("True")

1 个答案:

答案 0 :(得分:1)

for i in range(self.leftOff, len(self.fun_list)):
    if pysat_func.do_norm == self.fun_list [i]:
        print("True")
        break

或者,简单地说:

print (pysat_func.do_norm in self.fun_list [self.leftOff : ])

其工作原理如下:

self.fun_list

是您要搜索功能的列表。

self.fun_list [self.leftOff : ]

是该列表的尾部,因为从您的原始代码看来 您只想从索引为self.leftOff的元素中搜索。

[self.leftOff : ]

被称为切片,背后的空白:表示'直到结束'。

pysat_func.do_norm in aList

是一个布尔表达式,当且仅当True位于pysat_func.do_norm

时才会计算为aList

所以

pysat_func.do_norm in self.fun_list [self.leftOff : ]

是一个布尔表达式,当且仅当时,它的计算结果为True pysat_func.do_norm是我谈到的尾巴

print (anyThing)

会在大括号内打印任何内容,恰好是上面提到的True(或False)。

绑定方法在某个列表中的示例以及哪些绑定方法不是:

class A:
    def f (self):
        print ('f')

    def g (self):
        print ('g')

a1 = A ()
a2 = A () 

aList = [a1.f, a2.g]

print (
    a1.f in aList,
    a1.g in aList,
    a2.f in aList,
    a2.g in aList
)

打印:

True False False True