如何用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下载指定页面上图片的方法
May 12 Python
举例讲解Python中metaclass元类的创建与使用
Jun 30 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
Windows环境下python环境安装使用图文教程
Mar 13 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
Apr 27 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
详解js文件通过python访问数据库方法
Mar 03 Python
Python数据分析模块pandas用法详解
Sep 04 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 Python
python调用私有属性的方法总结
Jul 24 Python
python 自动识别并连接串口的实现
Jan 19 Python
Python之matplotlib绘制折线图
Apr 13 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
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
解决uWSGI的编码问题详解
2017/03/24 Python
Python数据分析matplotlib设置多个子图的间距方法
2018/08/03 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
Python同时处理多个异常的方法
2020/07/28 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
学生会竞选演讲稿学习部
2014/08/25 职场文书
公司租房协议书范本
2014/10/08 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
纪检部部长竞选稿
2015/11/21 职场文书