python - 创建两个列表的组合,直到一个列表中的值高于另一个?
问题描述
我设法使两者的所有可能组合,lists
但无法弄清楚如何创建组合,直到值list1
超过另一个。
list1 = [10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,90,100]
list2 = [30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,
140,150,155,160,165,170,
175,180,185,195,200]
我尝试过但仍在修改的代码,在这里搜索了stackoverflow:两个列表的组合
y = [zip(x,list1) for x in itertools.permutations(list2,len(list1)) if x > list1]
预期输出:
combi = [[(30,10),(30,15),(30,20),(30,25)],[(35,10),......,
(35,30)],.....,[(120,10),.......,(120,100)......]]
如果有办法限制第一项和第二项组合之间的差异,那将是完美的。
谢谢
解决方案
您不需要为此使用itertools
或zip
。您可以在列表理解中使用双for
循环来做到这一点:
result = [[(elem2,elem1) for elem1 in list1 if elem1 < elem2] for elem2 in list2]
推荐阅读
- python - 试图将 5 个卡值传递给函数,但不起作用
- tsql - 按时间段分组记录
- java - 使用 Firebase 的聊天应用
- kendo-ui - 资源的 Kendo Scheduler TimeLineView,将每个事件显示为好像它的 allDay 事件
- c# - 以编程方式下载电子邮件附件 C# WPF
- vba - VBA:运行时错误“438”:对象不支持此属性或方法
- android - 安卓游戏卡顿;gc 受控制并丢帧代替 Thread.sleep
- c - 将 Torvalds 的“Good Taste”应用于 Fortran 链表
- python - 安装 Jupyter Notebook 时遇到问题
- amazon-web-services - 在预留实例上启动实例