Python 代码优化、列表理解、lambda 函数

问题描述 投票:0回答:1

请帮忙。我有这些 for 循环:

        path = None
        for key, value in items:
            if key == a and value == b:
                path1 = key.func()
                break

        if path is None:
            return False
        for banana in bananas:
            found_match = False

            for key, value in items:
                path2 = key.func()
                if key == banana[0] and value == banana[1] and path1 in path2
                    found_match = True
                    break

            if not found_match:
               ...

两个内部 for 循环看起来很相似,但第二个有额外的

path1 in path2
条件。

有没有办法写得更好?也许有辅助功能? 使用列表理解或 lambda 函数会是什么样子? 谢谢您的帮助,我是新手。

python lambda list-comprehension
1个回答
0
投票

您确实可以通过使用辅助函数和列表推导来简化代码并避免重复内部循环逻辑。

def find_match(key, value, path1, items):
    for k, v in items:
        path2 = k.func()
        if k == key and v == value and path1 in path2:
            return True
    return False

def main_logic(a, b, items, bananas):
    path1 = None
    for key, value in items:
        if key == a and value == b:
            path1 = key.func()
            break

    if path1 is None:
        return False

    for banana in bananas:
        found_match = find_match(banana[0], banana[1], path1, items)
        if not found_match:
            # Your logic when there's no match
            ...

# Usage
items = [...]  # Your list of items
bananas = [...]  # Your list of bananas
a = ...
b = ...
result = main_logic(a, b, items, bananas)
  1. 我们定义一个find_match函数来封装查找的逻辑 基于提供的键、值和项目列表中的匹配项 路径1.
  2. main_logic函数负责处理你的主要逻辑。 它首先使用循环找到路径 1,然后对于每个香蕉,它使用 find_match 函数来检查匹配。
© www.soinside.com 2019 - 2024. All rights reserved.