续"如何捅破python编程的那层纸之三"
发布时间:2020-12-17 17:10:19 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 # coding:utf-8import itertoolsdef sameSums1(int_list): if len(int_list) == 1: # 列表只有一个元素必不能等分两组 return False sum_of_lsit = su
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 # coding:utf-8 import itertools def sameSums1(int_list): if len(int_list) == 1: # 列表只有一个元素必不能等分两组 return False sum_of_lsit = sum(int_list) halfsum = sum_of_lsit / 2 if sum_of_lsit % 2: # 和为奇数不可等分 return False int_list.sort(reverse=True) for i in xrange(1,len(int_list)/2 + 1): if sum(int_list[:i]) < halfsum: # 若最大的前N位之和不足半值就不必检测N位组合的各种方案了 continue elif sum(int_list[:i]) == halfsum: # 若恰巧是半值就直接返回 return tuple(int_list[:i]) for subset in itertools.combinations(int_list,i): sumsub = sum(subset) if sumsub == halfsum: # 找到就结束 return subset if __name__ == "__main__": import doctest doctest.testmod() import time lst1 = [3,9,10,30,8] lst2 = [4,5,6,7,8] lst3 = [2,2,3,3] lst4 = [10,8,1] lst5 = [74,80,40,38,68,58,91,65,75,88,47,84,30] lst6 = [97,87,96,24,12,98,85,99,67,49,86,83,28,57,90,62,93,23] lst7 = [93,94,36,4,54,69,64,19,21,53,46,82,78,20,45,27,72,48,49] t0 = time.time() print sameSums1(lst1) print sameSums1(lst2) print sameSums1(lst3) print sameSums1(lst4) print sameSums1(lst5) print sameSums1(lst6) print sameSums1(lst7) t1 = time.time() print t1 - t0 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Python中函数查找操作的时间复杂度是多少
- 通过在python中排列元素来最小化矩阵中的列总和
- Python 中urls.py:URL dispatcher(路由配置文件)详解
- Python随机数与随机字符串功能实例
- python – Django Rest-Framework嵌套序列化器命令
- Python readline,使用Cmd接口完成制表选项
- 用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运
- NameError:名称’hasattr’未定义 – Python3.6,Django1.
- Python利用Matplotlib和Tkinter在应用程序中内嵌图表
- Django项目的创建和启动