双迭代的替代方案

 mobiledu2502874233 发布于 2023-02-13 15:30

我有一个程序,要求我检查列表中的每个值与同一列表中的每个其他值.如果我确定了满足某些要求的内容,我会将其添加到另一个List中,以便在此过程完成后将其删除.

伪代码:

for value1 in my_list:
    for value2 in my_list:
        if meets_requirements(value1, value2):
            to_be_removed.append(value2)

这看起来很难看.变量的命名约定很难分配或理解.有潜力(虽然非常不可能,在这种情况下)我可能会在迭代时不小心修改列表.性能可能存在问题.

有没有更好的替代方法来执行这些双重迭代?

如果没有,有没有什么方法可以使这个更具可读性和"感觉"像质量代码?

1 个回答
  • 您不必先找到删除的值.只需一次创建所需的列表:

    my_list = [y for y in my_list 
                 if not any(meets_requirement(x,y) for x in my_list)]
    

    2023-02-13 15:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有