我有列表A和B,它们可以重复,例如:

A = ['x', 'x', 7]

B = [7, 'x', 'x']

现在,我希望将列表B置换为列表A的所有索引排列:

[1, 2, 0] # because [B[1], B[2], B[0]] == A

[2, 1, 0] # because [B[2], B[1], B[0]] == A

是否有办法在不迭代所有可能排列的情况下实现这一目标?

我已经用过

import itertools

for p in itertools.permutations(range(len(B))):

if A == permute(B,p):

遍历所有可能的排列并检查我想要的排列,但是我想更快地找到合适的排列.

解决方法:

这是一种方法.我的烫发功能会生成所有有效的排列.首先,我收集B中每个元素的索引,然后以递归方式构建并产生排列,方法是始终为A中的每个项目选择一个仍可用的索引,直到准备产生排列为止.

from collections import defaultdict

def perms(A, B):

indexes = defaultdict(set)

for i, e in enumerate(B):

indexes[e].add(i)

def find(perm):

k = len(perm)

if k == len(A):

yield perm

return

I = indexes[A[k]]

for i in list(I):

I.remove(i)

yield from find(perm + (i,))

I.add(i)

yield from find(())

用法:

A = ['x', 'x', 7]

B = [7, 'x', 'x']

for perm in perms(A, B):

print(perm)

输出:

(1, 2, 0)

(2, 1, 0)

标签:list,permutation,python,algorithm,sorting

来源: https://codeday.me/bug/20191120/2042322.html

python 列表有没有顺序_python-如何获取列表的所有顺序,以使该列表等于另一个列表?...相关推荐

  1. python新式类c3算法_Python新式类的方法解析顺序MRO与Super

    新式类与经典类的方法解析顺序 MOR(方法解析顺序) 经典类:深度优先 DFS python3以前 新式类:广度优先 python2.2 新式类:广度优先的C3算法实现(拓扑排序) BFS pytho ...

  2. python输入一个英文句子、翻转句子中单词的顺序_Python反转句子中单词的顺序

    输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如:输入'I am a student.',则输出'student. ...

  3. 获取python脚本的返回值_Python多线程获取返回值代码实例

    这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用多线程的时候难免想要获取其操作完的返回值 ...

  4. python正则取字符串日期_python 正则表达式获取字符串中所有的日期和时间

    提取日期前的处理 1.处理文本数据的日期格式统一化 text = "2015年8月31日,衢州元立金属制品有限公司仓储公司(以下简称元立仓储公司)成品仓库发生一起物体打击事故,造成直接经济损 ...

  5. python下载图片并保存_Python爬虫获取图片并下载保存至本地的实例

    1.抓取煎蛋网上的图片. 2.代码如下: import urllib.request import os #to open the url def url_open(url): req=urllib. ...

  6. python实例化是什么意思_Python中实例化class的执行顺序示例详解

    前言 本文主要介绍了关于Python实例化class的执行顺序的相关内容,下面话不多说了,来一起看看详细的介绍吧 Python里对类的实例化时有怎样的顺序 一般来说一个类里面有类变量和方法,比如我们定 ...

  7. python正则匹配html标签_Python正则获取、过滤或者替换HTML标签的方法

    本文实例介绍了Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法,具体内容如下 python正则表达式关键内容: python正则表达式转义符: . 匹配除换行符以外的任意字符 ...

  8. python装饰器的顺序_python中装饰器的装饰顺序和执行顺序

    在python语言中"装饰器"模式被设计成语言内置的设计模式,使得使用该模式变得简单,仅仅需要在目标函数前使用'@'符号加装饰器名就能达到目的.但如果同一个目标函数需要进行多次装饰 ...

  9. python条件表达式有哪几个_Python中条件表达式的评估顺序是什么?

    我知道python中的条件表达式是x if c else y,但是我在使用它时遇到了一些问题. 我有两个代码要比较. 代码1: 1 2 3 4 5 6 7 8def fun(p): if len(p) ...

最新文章

  1. 1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍丨开源
  2. openStack镜像制作
  3. 在Spring Boot中使用配置元数据来配置您的配置
  4. mysql三表where查询_mysql三表查询sql语句
  5. python中elif可以单独使用吗_python中elif可以单独使用吗
  6. android git项目管理,Android Studio中如何使用Git和Github来管理项目
  7. 设计模式之二-Proxy模式
  8. [Android]Webview中JS接口调用Java-版本问题
  9. A - 敌兵布阵(线段树)(单点更新区间求和)
  10. ViewStub你肯定听过,但是这些细节了解吗?
  11. 定制WES7紧急修复U盘
  12. android screenshot流程,APP中,Screenshot的设计要领和各发布渠道的要求
  13. 日语语音识别_日语语音识别软件_日语语音识别在线 - 云+社区 - 腾讯云
  14. PHP实现的7组经纬度与距离的计算函数
  15. 《重构》一书总结(二)
  16. 实验楼linux命令,GitHub - encorechow/linux-command: Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。...
  17. kali翻译插件_《Kali Linux解密》翻译-开启篇
  18. 用户数据报协议(UDP)
  19. 决策树和K近邻分类随堂笔记(一)
  20. %3c大自然的语言%3e竺可桢题目,大自然的语言 竺可桢阅读附答案

热门文章

  1. Linux学习总结(56)——如何处理阿里云服务器上入侵的kdevtmpfsi 挖矿病毒
  2. ActiveMQ学习总结(7)——ActiveMQ使用场景
  3. 50道编程小题目之【质数的个数】
  4. 学生上课睡觉班主任怎么处理_学生上课睡觉鼾声如雷,老师要拍照发家长群吗?一线教师为你分析...
  5. Intellij IDEA神器常用技巧六-Debug详解
  6. 高可用高性能负载均衡软件HAproxy详解指南-第一章(简介、安装)
  7. RadioButtonList控件绑定图片Vertical对齐
  8. 他人笑我太疯癫 我笑他人看不穿
  9. 给Execl样式添加配置文件.
  10. 找不到文件或程序集名称“DreamweaverCtrls”的解决方法