python 列表有没有顺序_python-如何获取列表的所有顺序,以使该列表等于另一个列表?...
我有列表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-如何获取列表的所有顺序,以使该列表等于另一个列表?...相关推荐
- python新式类c3算法_Python新式类的方法解析顺序MRO与Super
新式类与经典类的方法解析顺序 MOR(方法解析顺序) 经典类:深度优先 DFS python3以前 新式类:广度优先 python2.2 新式类:广度优先的C3算法实现(拓扑排序) BFS pytho ...
- python输入一个英文句子、翻转句子中单词的顺序_Python反转句子中单词的顺序
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如:输入'I am a student.',则输出'student. ...
- 获取python脚本的返回值_Python多线程获取返回值代码实例
这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用多线程的时候难免想要获取其操作完的返回值 ...
- python正则取字符串日期_python 正则表达式获取字符串中所有的日期和时间
提取日期前的处理 1.处理文本数据的日期格式统一化 text = "2015年8月31日,衢州元立金属制品有限公司仓储公司(以下简称元立仓储公司)成品仓库发生一起物体打击事故,造成直接经济损 ...
- python下载图片并保存_Python爬虫获取图片并下载保存至本地的实例
1.抓取煎蛋网上的图片. 2.代码如下: import urllib.request import os #to open the url def url_open(url): req=urllib. ...
- python实例化是什么意思_Python中实例化class的执行顺序示例详解
前言 本文主要介绍了关于Python实例化class的执行顺序的相关内容,下面话不多说了,来一起看看详细的介绍吧 Python里对类的实例化时有怎样的顺序 一般来说一个类里面有类变量和方法,比如我们定 ...
- python正则匹配html标签_Python正则获取、过滤或者替换HTML标签的方法
本文实例介绍了Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法,具体内容如下 python正则表达式关键内容: python正则表达式转义符: . 匹配除换行符以外的任意字符 ...
- python装饰器的顺序_python中装饰器的装饰顺序和执行顺序
在python语言中"装饰器"模式被设计成语言内置的设计模式,使得使用该模式变得简单,仅仅需要在目标函数前使用'@'符号加装饰器名就能达到目的.但如果同一个目标函数需要进行多次装饰 ...
- python条件表达式有哪几个_Python中条件表达式的评估顺序是什么?
我知道python中的条件表达式是x if c else y,但是我在使用它时遇到了一些问题. 我有两个代码要比较. 代码1: 1 2 3 4 5 6 7 8def fun(p): if len(p) ...
最新文章
- 1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍丨开源
- openStack镜像制作
- 在Spring Boot中使用配置元数据来配置您的配置
- mysql三表where查询_mysql三表查询sql语句
- python中elif可以单独使用吗_python中elif可以单独使用吗
- android git项目管理,Android Studio中如何使用Git和Github来管理项目
- 设计模式之二-Proxy模式
- [Android]Webview中JS接口调用Java-版本问题
- A - 敌兵布阵(线段树)(单点更新区间求和)
- ViewStub你肯定听过,但是这些细节了解吗?
- 定制WES7紧急修复U盘
- android screenshot流程,APP中,Screenshot的设计要领和各发布渠道的要求
- 日语语音识别_日语语音识别软件_日语语音识别在线 - 云+社区 - 腾讯云
- PHP实现的7组经纬度与距离的计算函数
- 《重构》一书总结(二)
- 实验楼linux命令,GitHub - encorechow/linux-command: Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。...
- kali翻译插件_《Kali Linux解密》翻译-开启篇
- 用户数据报协议(UDP)
- 决策树和K近邻分类随堂笔记(一)
- %3c大自然的语言%3e竺可桢题目,大自然的语言 竺可桢阅读附答案
热门文章
- Linux学习总结(56)——如何处理阿里云服务器上入侵的kdevtmpfsi 挖矿病毒
- ActiveMQ学习总结(7)——ActiveMQ使用场景
- 50道编程小题目之【质数的个数】
- 学生上课睡觉班主任怎么处理_学生上课睡觉鼾声如雷,老师要拍照发家长群吗?一线教师为你分析...
- Intellij IDEA神器常用技巧六-Debug详解
- 高可用高性能负载均衡软件HAproxy详解指南-第一章(简介、安装)
- RadioButtonList控件绑定图片Vertical对齐
- 他人笑我太疯癫 我笑他人看不穿
- 给Execl样式添加配置文件.
- 找不到文件或程序集名称“DreamweaverCtrls”的解决方法