如何用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类:class创建、数据方法属性及访问控制详解
Jul 25 Python
python下载文件记录黑名单的实现代码
Oct 24 Python
python 将md5转为16字节的方法
May 29 Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 Python
详解numpy的argmax的具体使用
May 27 Python
python中update的基本使用方法详解
Jul 17 Python
深入解析神经网络从原理到实现
Jul 26 Python
keras.layer.input()用法说明
Jun 16 Python
Python bisect模块原理及常见实例
Jun 17 Python
Python中Selenium库使用教程详解
Jul 23 Python
Python快速实现一键抠图功能的全过程
Jun 29 Python
一文搞懂Python Sklearn库使用
Aug 23 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的命令行命令使用指南
2015/08/18 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
JavaScript高级程序设计
2006/12/29 Javascript
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
Python selenium 三种等待方式解读
2016/09/15 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
python通过zabbix api获取主机
2018/09/17 Python
对python字典过滤条件的实例详解
2019/01/22 Python
基于Python解密仿射密码
2019/10/21 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
2016/03/14 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
音乐表演专业毕业生求职信
2013/10/14 职场文书
会计毕业自我鉴定
2014/02/05 职场文书
法学函授自我鉴定
2014/02/06 职场文书
新教师工作感言
2014/02/16 职场文书
教学改革实施方案
2014/03/31 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
小学安全汇报材料
2014/08/14 职场文书
小学推普周活动总结
2015/05/07 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python