python所有组合,在python中组合n个列表的所有元素
这是使用itertools置换和链函数的另一种方法。您还需要检查索引是否排成一行并且长度相同,以及是否有多个元素被替换from itertools import *
data_small = [ ['a','b','c'], ['d','e','f'] ]
data_big = [ ['a','b','c'], ['d','e','f'], ['u','v','w'], ['x','y','z'] ]
def check(data, sub):
check_for_mul_repl = []
for i in data:
if len(i) != len(data[0]):
return False
for j in i:
if j in sub:
if i.index(j) != sub.index(j):
return False
else:
if i not in check_for_mul_repl:
check_for_mul_repl.append(i)
if len(check_for_mul_repl) <= 2:
return True
print [x for x in list(permutations(chain(*data_big), 3)) if check(data_big, x)]
['a', 'b', 'c'], ['a', 'b', 'f'], ['a', 'b', 'w'], ['a', 'b', 'z'],
['a', 'e', 'c'], ['a', 'e', 'f'], ['a', 'v', 'c'], ['a', 'v', 'w'],
['a', 'y', 'c'], ['a', 'y', 'z'], ['d', 'b', 'c'], ['d', 'b', 'f'],
['d', 'e', 'c'], ['d', 'e', 'f'], ['d', 'e', 'w'], ['d', 'e', 'z'],
['d', 'v', 'f'], ['d', 'v', 'w'], ['d', 'y', 'f'], ['d', 'y', 'z'],
['u', 'b', 'c'], ['u', 'b', 'w'], ['u', 'e', 'f'], ['u', 'e', 'w'],
['u', 'v', 'c'], ['u', 'v', 'f'], ['u', 'v', 'w'], ['u', 'v', 'z'],
['u', 'y', 'w'], ['u', 'y', 'z'], ['x', 'b', 'c'], ['x', 'b', 'z'],
['x', 'e', 'f'], ['x', 'e', 'z'], ['x', 'v', 'w'], ['x', 'v', 'z'],
['x', 'y', 'c'], ['x', 'y', 'f'], ['x', 'y', 'w'], ['x', 'y', 'z']
这不关心是否有多个元素被替换
^{pr2}$
我使用置换而不是组合的原因是('d','b','c')在组合方面等于{},而不是在置换中
如果你只想要组合,那就简单多了。你能做到的def check(data) #Check if all sub lists are same length
for i in data:
if len(i) != len(data[0]):
return False
return True
if check(data_small):
print list(combinations(chain(*data_small), 3))
[('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'b', 'e'), ('a', 'b', 'f'),
('a', 'c', 'd'), ('a', 'c', 'e'), ('a', 'c', 'f'), ('a', 'd', 'e'),
('a', 'd', 'f'), ('a', 'e', 'f'), ('b', 'c', 'd'), ('b', 'c', 'e'),
('b', 'c', 'f'), ('b', 'd', 'e'), ('b', 'd', 'f'), ('b', 'e', 'f'),
('c', 'd', 'e'), ('c', 'd', 'f'), ('c', 'e', 'f'), ('d', 'e', 'f')]
python所有组合,在python中组合n个列表的所有元素相关推荐
- python 如何在一个for循环中遍历两个列表
是我在看<笨方法学python>过程中发现有一行代码看不懂--" for sentence in snippet, phrase:",所以研究了半天,感觉挺有收获的.所 ...
- oracle如何组合索引,Oracle中组合索引的使用
Oracle中组合索引的使用 Oracle中组合索引的使用 一.什么是索引? 数据库索引类似一本书的目录,目录中将书的内容先分为第一层(第一章.第二章--第N章的标题和对应页码),第二层(1.1XXX ...
- python入门编程题库-Python随笔30:Python基础编程练习题25~26
注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. Python编程 Python基础练习题25:合并两个列 ...
- python的继承用法_python之继承中组合用法与菱形继承关系查找法
1.什么是组合 组合就是一个类的对象具备某一属性,该属性的值是指向另外外一个类的对象 2.为什么用组合 组合也是用来解决类与类之间代码冗余问题 3.用法 class Course: ...
- python中组合数据类型、函数和代码复用的难点_Python电子教案5-2 函数和代码复用...
<Python电子教案5-2 函数和代码复用>由会员分享,可在线阅读,更多相关<Python电子教案5-2 函数和代码复用(56页珍藏版)>请在人人文库网上搜索. 1.七段数码 ...
- python 排列组合_Python 实现排列组合中 nCr 算法
前言 本文提供一种使用 Python 计算 组合公式 nCr 比较高效的算法. 环境 Python 2.7. 公式中,n为下角标,m为上角标. C(n, m) = A(n, m) / m! = n! ...
- Python中的pynput中组合键的键值
pynput 监听键盘组合键 监听键盘组合键 更多的其他组合键键值 监听键盘组合键 在使用pynput监听键盘组合键的时候,需要知道组合键的键值是什么才可以.例如下面: <48>代表的就是 ...
- python二维列表每个子列表取一个元素的所有组合
这是一个汉字字符串: "银行卡测试" 我要求出他的拼音首字母组合, 预期:"yhkcs" 实际:"yhqcs" 没错,它含有一个多音字:卡 ...
- 哪个选项不是python文件打开的合法模式组合_下面代码的输出结果是( ):
[填空题]Python使用____作为转义符的开始符号. [单选题]本工程墙体做法,以下说法正确的是 ( ) . [多选题]现浇板板上预留的孔洞,说法正确的是( ). [填空题]____符号用于Pyt ...
- 深度之眼 - Python学习笔记——第四章 组合数据类型
第四章 组合数据类型 4.1 列表 列表是可变的! 4.1.1 列表的表达 序列类型:内部元素有位置关系,能通过位置序号访问其中元素 列表是一个可以使用多种类型元素,支持元素的增.删.查.改操作的序列 ...
最新文章
- js array push 添加内容
- WPF中触发器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种
- JavaScript是如何工作的:JavaScript的共享传递和按值传递
- octave绘制图片Figure后无法关闭
- [Java基础]自然排序Comparable的使用
- android设置错误页面,Android ViewPager设置当前项目/页面时抛出IndexOutOfBounds异常
- 中本聪主题系列NFT收藏品在OpenSea发售,于26秒内售罄
- 存储过程中拼接sql的示例
- Linux课程第二十四天学习笔记
- quartz spring配置实例代码demo下载
- 百度网盘打开显示读写权限不足
- 采购与供应链管理 读书笔记一
- 使用Ruby搭建Redis 集群
- 通过bitmap改变图片的大小
- 安装软件时遇到 1152:Error extracting to the temporary location
- 用PS画出少女脸颊红晕
- 海南信用社计算机试题,2018海南农村信用社考试 计算机 模拟试卷六答案
- API 快速开发平台设计思考
- pandas中DataFrame可视化之画多图的方法小结
- <贪心算法>学习及经典实例分析
热门文章
- 190520每日一句
- fatal error LNK1281: 无法生成 SAFESEH 映像
- Atitit 艾提拉博士带来“深度?广度?高度 人员的职业发展之路 ”的主题分享。 目录 1.1. 技术团队气氛的区别 开发架构模式	2 1.2. 技术人员的职业发展有哪些路线?	3 1.3. 主
- atitit 组织机构性质与名称表.docx
- Atitit js canvas的图像处理类库attilax总结与事业
- atititt.java定时任务框架选型Spring Quartz 注解总结
- paip.java 多线程参数以及返回值Future FutureTask 的使用.
- paip.提升分词---准确度--常用量词表
- paip.输入法编程---增加码表类型
- paip.php eclipse output echo 乱码