python输出所有组合数_生成两个列表的所有组合,并在python中一一输出
小编典典
这是一个非常丑陋的算法,但是对我有用。它也不是超级昂贵的(当然,期望使用itertools.combinations(a,i)生成所有组合):
import itertools
def all_combs(a):
to_return = []
temp = []
for i in a:
temp.append(i)
to_return.append(temp)
for i in range(2, len(a) + 1):
temp = []
for j in itertools.combinations(a, i):
s = ""
for k in j:
s = s + str(k)
temp.append(int(s)) #Get all values from the list permutation
to_return.append(temp)
print(to_return)
return to_return
def all_perm(a, b):
a_combs = all_combs(a)
b_combs = all_combs(b)
to_return = []
for i in a_combs:
for j in b_combs:
for k in i:
for l in j:
to_return.append(10**len(str(l)) * k + l)
to_return.sort()
for i in to_return:
yield i
编辑:修复了无法正确读取多位数字值的错误编辑:使函数充当了生成器编辑:修复了涉及数字的错误(通过添加排序…)
编辑:这是一个非常出色的实现,可以更紧密地满足生成器样式。它仍然不是完美的,但是在一般情况下应该可以提供良好的加速效果:
import itertools
def add_to_dict(dict, length, num):
if not length in dict:
dict[length] = []
dict[length].append(num)
def sum_to_val(val):
to_return = []
for i in range(1, val):
to_return.append([i, val-i])
return to_return
def all_combs(a):
to_return = {}
for i in a:
add_to_dict(to_return, len(str(i)), i)
for i in range(2, len(a) + 1):
for j in itertools.combinations(a, i):
s = ""
for k in j:
s = s + str(k)
add_to_dict(to_return, len(s), int(s)) #Get all values from the list permutation
return to_return
def all_perm(a, b):
a_combs = all_combs(a)
b_combs = all_combs(b)
for val in range(max(a_combs.keys())+max(b_combs.keys())+1):
to_return = []
sums = sum_to_val(val)
for i in sums:
if not(i[0] in a_combs and i[1] in b_combs):
continue
for j in a_combs[i[0]]:
for k in b_combs[i[1]]:
to_return.append(10**len(str(k)) * j + k)
to_return.sort()
for i in to_return:
yield i
2020-07-28
python输出所有组合数_生成两个列表的所有组合,并在python中一一输出相关推荐
- python列表两两组合_关于python:两个列表之间的组合?
已经有一段时间了,我很难用我正在尝试的算法来概括我的想法.基本上,我有两个列表,想要得到这两个列表的所有组合. 我可能解释不正确,所以这里举个例子. name = 'a', 'b' number = ...
- python判断两个列表内容是否一致_检查两个列表在Python中是否相同
在python数据分析中,当我们需要比较两个列表并找出它们是否具有相同元素或没有相同含义时,我们可能会遇到这种情况. 例题listA = ['Mon','Tue','Wed','Thu'] listB ...
- python列表中随机两个_随机化两个列表并在python中维护顺序
随机化两个列表并在python中维护顺序 说我有两个简单的清单, a = ['Spears', "Adele", "NDubz", "Nicole&q ...
- python dict批量选择_这一定是你见过最全面的python重点
由于总结了太多的东西,所以篇幅有点长,这也是我"缝缝补补"总结了好久的东西. Py2 VS Py3 print成为了函数,python2是关键字 不再有unicode对象,默认st ...
- python 大学教授整理_剑桥大学教授用时35天亲自整理,Python超详细的基础笔记
python简介 python是一种面向对象的解释型计算机程序设计语言,python的是吉多·范罗苏姆(Guido van Rossum)于1989年发明 任何语言都有优缺点,python也不例外,p ...
- 微软python认证难不难_微软MTA认证98-381Python高分必看——100小时Python从0到1完全学习实战...
Chapter 01 环境搭建 1.1 安装PYTHON 1.1.1 Windows下安装Python 1.2 开发学习 :IDLE简介 1.2.1 交互式 1.2.2 文件式 1.2.3 两种方式的 ...
- 青少年编程python一级真题_青少年编程能力等级测评试卷二及答案 Python编程(一级)...
青少年编程能力等级测评试卷 Python编程(一级) (考试时间90分钟,满分100分) 一.单项选择题(共20题,每题2.5分,共50分) 1. 运行下方代码段,输出是6,则输入的可能是( C ). ...
- python可以修图吗_会照片处理的不只是ps,还有Python!
女朋友老是吵着要修图,作为程序员,只会敲代码,不会ps啊,真是令人头大. 程序员是这么容易被难到的吗?肯定不会!最近发现了程序员的p图神器--python. python也可以修图吗?是滴!下面就带你 ...
- python大型项目经验_经验丰富程序员才知道的8种高级Python技巧
全文共2330字,预计学习时长11分钟 图源:unsplash 本文将介绍8个简洁的Python技巧,若非经验十足的程序员,你肯定有些从未见过.向着更简洁更高效,出发吧! 1.通过多个键值将对象进行排 ...
最新文章
- linux下的重要服务dns
- Oracle PLSQL 导出数据table xx contains one or more CLOB columns 解决方案
- 手机客户端连接linux
- 解决网络通信中外网和内网之间的通信问题(NAT转换)
- JQuery Datatables单元格内显示数据太长,截取部分显示功能
- Scrapy 一些常用方法总结(调试,定时与测试)
- 消除由try/catch语句带来的Warning
- 《Java并发编程实战》读书笔记一:基础知识
- 计算机网络工程概论论文,网络工程专业导论论文提纲格式模板 网络工程专业导论论文框架怎么写...
- 安装Petalinux
- 什么是即席查询及即席查询实现
- win10桌面计算机图标隐藏,win10系统隐藏桌面单个图标的恢复方法
- PhalAPI学习笔记拓展篇 ——— 基于MySQL数据库交互题目
- 【ubuntu】The following signatures couldn‘t be verified because the public key is not available
- 【Tinking in Java摘录笔记】第六章 初始化和清理
- 解放生产力,VSCode使用小技巧
- 中国建设银行信息技术岗笔试
- SpringAop两种配置:xml配置和注解方式
- Windows Subsystem for Android (WSA) 下载:在 Windows 11 上运行 Android 应用
- 英语学习中总结的阅读、段落匹配、选词填空技巧
热门文章
- J2EE(一)——开发简单WEB服务器
- Repeater控件使用小结持续更新
- 互联网公司IT系统架构进化之路
- 我是一个机箱 《转载》
- vs2005 Key not valid for use in specified state
- [原创]关于javax.servlet.ServletException: File [/loginController/getVerifCode.jsp] not found异常 解决方案
- Ubuntu解决Nvidia驱动缺失导致的HDMI无法输出问题
- 将UTC日期时间转换为本地日期时间
- #39;$(this)#39;和#39;this#39;有什么区别?
- 如何使用JavaScript漂亮地打印JSON?