如何用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之简单主机批量管理工具
Jan 27 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
python之super的使用小结
Aug 13 Python
python导入模块交叉引用的方法
Jan 19 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
python 爬取疫情数据的源码
Feb 09 Python
使用Tkinter制作信息提示框
Feb 18 Python
解决Django Haystack全文检索为空的问题
May 19 Python
如何理解Python中包的引入
May 29 Python
pytorch 查看cuda 版本方式
Jun 23 Python
使用Pytorch实现two-head(多输出)模型的操作
May 28 Python
python lambda 表达式形式分析
Apr 03 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 网上商城促销设计实例代码
2012/02/17 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
一个实用的php验证码类
2017/07/06 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
js date 格式化
2017/02/15 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
vue引入静态js文件的方法
2020/06/20 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
质量工程师岗位职责
2013/11/16 职场文书
亮化工程实施方案
2014/03/17 职场文书
个人委托书怎么写
2014/04/04 职场文书
供应链金融服务方案
2014/05/25 职场文书
药品营销策划方案
2014/06/15 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python
golang 比较浮点数的大小方式
2021/05/02 Golang