为循环检索单行2中最里面的值?

2024-04-25 20:49:52 发布

您现在位置:Python中文网/ 问答频道 /正文

当name与I匹配时,我试图得到j的值。但不幸的是,我得到的只是Functions()中的最后一个元素。我想这是有道理的。但是,当name与GetFunctionName()的列表匹配时,如何获得j的值呢?你知道吗

有没有一行代码可以这样做?你知道吗

func_ea = [j for i in [GetFunctionName(j) for j in Functions()] if name in i]

编辑:谢谢埃里克解决了第一个问题 有没有可能进一步减少到一行呢?你知道吗

def LocateBytesInFunctions(self, searchterm, *funcname):
    foundaddress = []

    for name in funcname:
        func_ea = [i for i in Functions() if name in GetFunctionName(i)]
        for startea in func_ea:
            endea = GetFunctionAttr(startea, FUNCATTR_END)
            self.debugprint("Start: " + hex(startea) + " End: " + hex(endea))
            foundaddress.extend(self.LocateBytes(searchterm, startea, endea))
    return foundaddress`

Tags: nameinselfforiffunctionsfunchex
2条回答

内部理解正在运行到完成,因此j被绑定到Functions()的最后一个结果。解决这个问题的一种方法是同时保持jGetFunctionName(j),以便稍后在理解循环中引用它。你知道吗

func_ea = [j for i, j in [(GetFunctionName(j), j) for j in Functions()]
             if name in i]

因为i只在一个地方使用,所以您可以扩展内部理解:

func_ea = [j for j in Functions() if name in GetFunctionName(j)]

相关问题 更多 >