我有一个程序,要求我检查列表中的每个值与同一列表中的每个其他值.如果我确定了满足某些要求的内容,我会将其添加到另一个List中,以便在此过程完成后将其删除.
伪代码:
for value1 in my_list: for value2 in my_list: if meets_requirements(value1, value2): to_be_removed.append(value2)
这看起来很难看.变量的命名约定很难分配或理解.有潜力(虽然非常不可能,在这种情况下)我可能会在迭代时不小心修改列表.性能可能存在问题.
有没有更好的替代方法来执行这些双重迭代?
如果没有,有没有什么方法可以使这个更具可读性和"感觉"像质量代码?
您不必先找到删除的值.只需一次创建所需的列表:
my_list = [y for y in my_list if not any(meets_requirement(x,y) for x in my_list)]