如何用itertools解决无序排列组合的问题


Posted in Python onMay 18, 2017

最近我作为Python菜鸟一枚开始征战Codewars,所以打算在这里记下遇到的有意思的题目。今天这第一题叫做“Best Travel”:

John和Mary计划去一些小镇旅行。Mary已经列好了这些小镇之间的距离比如ls=[50, 55, 57, 58, 60]。但是John不想开车太累,所以提出了两个要求:1) 开车不超过某个距离比如t=174 miles 2) 只能去3个小镇。

选择哪3个小镇可以让John和Mary都满意呢?(即找到距离之和最接近或等于t的3个小镇)

这道题目可以抽象成:

输入一个整数列表ls和整数t:

1. 找出从ls中任取三个元素的所有组合

2. 计算每个组合的三个元素之和

3. 如果存在小于或等于t的和,那么从中挑出最大的,然后输出这个最大和对应的三元素组合

4. 如果不存在,只好返回None

实现要点:

1. 无序排列组合:

用itertools模块的combinations方法

2. 求和:

用sum函数

3. 求最大值:

用max函数

4. 捕获异常:

用try-except

借用这一题的某个best solution, 实现代码为:

def choose_best_sum(t, k, ls):
  import itertools

  try:
    return max(sum(combination) for combination in itertools.combinations(ls, k) if sum(combination) <= t)
  except:
    return None

以上这篇如何用itertools解决无序排列组合的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中IPYTHON入门实例
May 11 Python
Python使用time模块实现指定时间触发器示例
May 18 Python
Python中pygal绘制雷达图代码分享
Dec 07 Python
多个应用共存的Django配置方法
May 30 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
Jun 04 Python
利用python中集合的唯一性实现去重
Feb 11 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
学会迭代器设计模式,帮你大幅提升python性能
Jan 03 Python
python 如何用terminal输入参数
May 25 Python
Python 发送SMTP邮件的简单教程
Jun 24 Python
python scrapy简单模拟登录的代码分析
Jul 21 Python
详解使用python的logging模块在stdout输出的两种方法
May 17 #Python
Python中正则表达式详解
May 17 #Python
python算法演练_One Rule 算法(详解)
May 17 #Python
浅谈pyhton学习中出现的各种问题(新手必看)
May 17 #Python
Python入门_学会创建并调用函数的方法
May 16 #Python
Python入门_浅谈逻辑判断与运算符
May 16 #Python
Python入门_条件控制(详解)
May 16 #Python
You might like
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
python安装gdal的两种方法
2019/10/29 Python
django orm模块中的 is_delete用法
2020/05/20 Python
python爬虫---requests库的用法详解
2020/09/28 Python
详解python对象之间的交互
2020/09/29 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
白俄罗斯大卖场:21vek.by
2019/07/25 全球购物
《挑山工》的教学反思
2014/02/16 职场文书
yy司仪主持词
2014/03/22 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
晚会闭幕词
2015/01/28 职场文书
长江七号观后感
2015/06/11 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技