如何用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 相关文章推荐
如何利用Fabric自动化你的任务
Oct 20 Python
浅谈Python数据类型判断及列表脚本操作
Nov 04 Python
Python单例模式实例详解
Mar 01 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
May 08 Python
Python中的id()函数指的什么
Oct 17 Python
python中cPickle类使用方法详解
Aug 27 Python
BP神经网络原理及Python实现代码
Dec 18 Python
python之pyqt5通过按钮改变Label的背景颜色方法
Jun 13 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
通过python扫描二维码/条形码并打印数据
Nov 14 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
Python OpenCV 图像平移的实现示例
Jun 04 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/01/09 PHP
使用PHP生成PDF方法详解
2015/01/23 PHP
php获取远程文件内容的函数
2015/11/02 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
xmlHTTP实例
2006/10/24 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
安装vue-cli的简易过程
2018/05/22 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
2019/05/23 jQuery
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
python实现文件助手中查看微信撤回消息
2019/04/29 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
大学军训自我鉴定
2013/12/15 职场文书
小学毕业寄语大全
2014/04/03 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
企业整改报告范文
2014/11/08 职场文书
英文感谢信格式
2015/01/21 职场文书
学前班教学反思
2016/02/24 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏