python - 根据另一个列表的顺序消除列表的组合
问题描述
我有一个列表,其中包含按升序排列的数字因子。我已经生成了该列表的排列,现在我需要消除与原始升序因子列表具有相同顺序的排列。
考虑例如:
Number=9
factors=1,3,9
l=[1,3,9]
上面列表 1 的排列是我在 Python 中使用排列函数存储为列表的列表:
ll=[[1,3,9],[1,9,3],[3,1,9],[3,9,1],[9,1,3],[9,3,1]]
现在我需要以与 9 的因子相同的顺序消除具有 2 个或更多元素的组合以升序排列:从组合中删除:
[**[1,3,9]**,[**3,9**,1],[9,**1,3**]]
我只需要 :[[1,9,3],[3,1,9],[9,3,1]
请帮助解决方案,集合是无序的,因此没有选择。谢谢
解决方案
如果排列具有原始因子列表中的一对,您可以简单地过滤。
original_pairs = {(l[i], l[i+1]) for i in range(len(l)-1)}
def has_original_pair(my_list, pairs):
for i in range(len(my_list)-1):
if (my_list[i], my_list[i+1]) in pairs:
return True
return False
filtered_ll = [x for x in ll if not has_original_pair(x, original_pairs)]
推荐阅读
- amazon-web-services - AWS CDK - 创建 AWS ECS 服务时出现模糊错误
- python - 由于特征不匹配而无法预测
- java - 如何计算新日期?- 使用一个日期变量和一个 int 变量
- python-3.x - 使用正则表达式进行模式匹配
- javascript - 在等待/承诺上下文中调用自身的函数 - 无法解构“未定义”或“空”的属性“响应”。在评估
- python - 字典值的列表理解,根据值分配 0 或 1
- java - 序列化类 Java
- javascript - 当孩子在某个页面上时,在父 iframe 中运行一个函数
- r - 使用先前渲染的 .pdf 作为子图
- python - 绘制具有给定值和权重的 GMD