我希望在给定大小为n的数组的情况下生成所有可能的4元组对的列表. n至少为8,因此总能找到至少1对.

作为一个有助于理解问题的例子,我使用较小版本的问题,2元组对给出一个大小为5的数组.2元组对的预期结果将导致15个项目(元组被排序,没有重复) :

[(1,2),(3,4)],[(1,5)],(4,3),( 2,(2,4),3)],[( 1,5),[(2,4)]

我目前的方法是使用python中的itertools并遍历itertools.combinations返回的所有元素,执行2个循环并找到不共享单个元素的2对然后使用该元素.

为了在python代码中表达这一点,我准备了一个小片段:

arr = list(range(30)) # example list

comb = list(itertools.combinations(range(0,len(arr)),4))

for c1 in comb:

for c2 in comb: # go through all possible pairs

if len([val for val in c1 if val in c2]) == 0: # intersection of both sets results in 0,so they don't share an element

... # do something and check for duplicates

此方法正在完成其工作,但由于2个循环而效率低,并且仅在给定时间范围内适用于小n.这可以更有效率吗?

更新:在一些答案后,我评估了建议.对于我的特定情况,最好的事情是MSeifert的(现已删除的)答案提供的(扩展)算法,它执行速度最快:

def generate_four_pairs(n):

valids = range(0,n)

for x00,x01,x02,x03,x10,x11,x12,x13 in itertools.combinations(valids,8):

yield [x00,x03],[x10,x13]

yield [x00,x10],[x03,x11],x12],x13],x12]

yield [x00,[x02,x11]

yield [x00,[x01,x10]

yield [x01,x00],x13]

yield [x01,[x00,x12]

yield [x01,x11]

yield [x01,x13,x11]

对于一般方法,我建议NPE提供的答案,因为这是这个问题的最简单和最简单的可读答案.

python输出元组重复的元素_python – 从n个元素生成所有4元组对相关推荐

  1. python输出不重复的单词_Python情感分析(比较单词时,不计算文本中重复的单词)...

    您可以使用嵌套的for loop来实现这一点,但是这并不是解决简单问题的好方法:for posWord in posWords: for test in readFile: if i == test: ...

  2. python练习-Python输出不重复的字符

    #Python输出不重复的字符#输入一个字符串,把最左边的10个不重复的字符(大小写算不同字符)挑选出来 #如果不重复的字符不到10个,则按实际数目输出 #输入格式:输入一个字符串s #输出格式:输出 ...

  3. python 元组和列表区别_Python 基础(六):列表与元组

    1 列表 1.1 简介 Python 中没有数组,而是加入了功能更强大的列表(list),列表可以存储任何类型的数据,同一个列表中的数据类型还可以不同:列表是序列结构,可以进行序列结构的基本操作:索引 ...

  4. python取list的个别元素_python 获取list特定元素下标的实例讲解

    python 获取list特定元素下标的实例讲解 在平时开发过程中,经常遇到需要在数据中获取特定的元素的信息,如到达目的地最近的车站,橱窗里面最贵的物品等等.怎么办?看下面 方法一:利用数组自身的特性 ...

  5. python查看列表有多少元素_python 统计列表中元素的数量

    一.统计列表中不同元素的个数 这个需求是统计列表中不同元素有几个,由于列表是允许存在重复元素的,但是集合却不允许存在重复元素,所以可以将list转换为set,然后求长度. list=[1,2,1,2, ...

  6. python输出图形效果的代码_python打印图形大全(详解)

    原博文 2019-04-13 23:48 − 1)for i in range(0,10): shixin=chr(9679) print(shixin) -------------------结果: ...

  7. python集合增加元素_python集合的新增元素方法整理

    我们可以把全体人数当作一个集合,想要往其中加入新人有不同的增加方式.可以一周增加一次,也可以集中到月底一起加入集体.我们今天所要讲的在python集合中,添加元素的两种方法就可以这样理解.一个是整体加 ...

  8. python输出hello的字符串字数_python 字符串

    一.基本概述 在python中没有单独的字符类型,也即一个单独的字符在python中也是字符串类型.python中一般使用单引号或双引号表示字符串.当然也可使用三单引号和三双引号表示多行字符串. 二. ...

  9. python字典怎么增加元素_Python字典(dict)增加元素

    Python字典(dict)增加元素 在 如果 key 不存在,那么会将 key 添加进字典,并将该 key 的值设置为 value. 字典增加元素详解 语法 dict[key] = value 参数 ...

最新文章

  1. 40个常用的网站制作技巧
  2. java 爬虫 异步_Java 爬虫遇上数据异步加载,试试这两种办法!
  3. ​10.24,华为鲲鹏要为程序员发福利!
  4. JAVA Thread线程异常监控
  5. Kettle使用_24 Kettle输入输出组件汇总
  6. java用scanner 和random的一个小案例
  7. 数据结构和算法———P2 算法概述
  8. 《菜菜的机器学习sklearn课堂》sklearn入门与决策树
  9. 三国佚事--巴蜀危机
  10. 【软件下载】Axure10正式版(含汉化包)
  11. java学生签到系统代码_java学生考勤签到代码【相关词_ 学生考勤系统java代码】...
  12. 2017大一计算机教程,2017年计算机等考一级章节考点:WPS2000新手入门教程
  13. kaggle代码补全
  14. HBuilder配置Mumu模拟器
  15. R语言中dim函数_R语言入门:函数介绍(3)—— %gt;%
  16. 根据文件后缀名显示对应类型缩略图
  17. 多御安全浏览安卓版升级尝鲜,新增下载管理功能
  18. 基于深度学习的花卉检测与识别系统(YOLOv5清新界面版,Python代码)
  19. 【引语练习题】Ask questions politely
  20. ET篇:ETBook笔记(1.2 为什么使用C# .net core做服务端?)

热门文章

  1. 文献阅读005【精读】
  2. Linux-磁盘及网络IO工作方式解析
  3. oracle补零 (转)
  4. netstat查询端口被占用
  5. 接口做的好怎么形容_匠品美缝知识之接口美缝如何做?
  6. php教程 二叉树,PHP ClassObject -- PHP 自排序二叉树的深入解析
  7. mfc远程连接mysql数据库连接_MFC连接mysql数据库(十分钟搞定)
  8. 支撑200并发_搞清楚系统到底怎样支撑高并发以及架构图的绘制(面试向)
  9. new string(abc)创建了几个对象_面试题系列第2篇:new String()创建几个对象?有你不知道的...
  10. apache php mysql环境搭建_Ubuntu+Apache+PHP+Mysql环境搭建(完整版)