如何用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中return语句用法实例分析
Aug 04 Python
分享给Python新手们的几道简单练习题
Sep 21 Python
Python登录并获取CSDN博客所有文章列表代码实例
Dec 28 Python
Python使用progressbar模块实现的显示进度条功能
May 31 Python
使用python脚本实现查询火车票工具
Jul 19 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
python石头剪刀布小游戏(三局两胜制)
Jan 20 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
对python中不同模块(函数、类、变量)的调用详解
Jul 16 Python
Pandas缺失值2种处理方式代码实例
Jun 13 Python
Python过滤序列元素的方法
Jul 31 Python
python ansible自动化运维工具执行流程
Jun 24 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数据库连接
2006/10/09 PHP
php仿ZOL分页类代码
2008/10/02 PHP
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
JavaScript入门学习书籍推荐
2008/06/12 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
Python中pygal绘制雷达图代码分享
2017/12/07 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
python word转pdf代码实例
2019/08/16 Python
通过Python实现一个简单的html页面
2020/05/16 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
高级方案规划工程师岗位职责
2013/11/29 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
导师就业推荐信范文
2014/05/22 职场文书
工作简历自我评价
2015/03/11 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
详细了解java监听器和过滤器
2021/07/09 Java/Android
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript