在Python中查找给定字符串的所有可能排列[重复]

2024-01-11

我有一根绳子。我想通过更改该字符串中字符的顺序来生成该字符串的所有排列。例如,说:

x='stack'

我想要的是这样的列表,

l=['stack','satck','sackt'.......]

目前,我正在迭代字符串的列表强制转换,随机选取 2 个字母并将它们转置以形成新字符串,并将其添加到 l 的强制转换中。根据字符串的长度,我计算可能的排列数量并继续迭代,直到集合大小达到限制。 必须有更好的方法来做到这一点。


itertools 模块有一个有用的方法,称为 permutations()。文档 http://docs.python.org/library/itertools.html#itertools.permutations says:

itertools.permutations(iterable[ r])

返回可迭代中元素的连续 r 长度排列。

如果 r 未指定或为 None,则 r 默认为 可迭代并且生成所有可能的全长排列。

排列按字典顺序发出。所以,如果输入 iterable 已排序,排列元组将按排序生成 命令。

不过,您必须将排列好的字母作为字符串连接起来。

>>> from itertools import permutations
>>> perms = [''.join(p) for p in permutations('stack')]
>>> perms

['堆栈','stakc','stcak','stcka','stkac','stkca','satck', 'satkc','sactk','sackt','saktc','sakct','sctak','sctka', 'scatk', 'scat', 'sckta', 'sckat', 'sktac', 'sktca', 'skatc', 'skact', 'skcta', 'skcat', 'tsack', 'tsakc', 'tscak', 'tscka', 'tskac', 'tskca', 'tasck', 'taskc', 'tacsk', '大头钉', 'taksc', 'takcs', 'tcsak', 'tcska', 'tcask', 'tcaks', 'tcksa', 'tckas', 'tksac','tksca','tkasc','tkacs','tkcsa','tkcas','astck', 'astkc', 'asctk', 'asckt', 'asktc', 'askct', 'atsck', 'atskc', 'atcsk','atcks','atksc','atkcs','acstk','acskt','actsk', 'actks'、'ackst'、'ackts'、'akstc'、'aksct'、'aktsc'、'aktcs'、 'akcst'、'akcts'、'cstak'、'cstka'、'csatk'、'csakt'、'cskta'、 'cskat'、'ctsak'、'ctska'、'ctask'、'ctaks'、'ctksa'、'ctkas'、 'castk', 'caskt', 'catsk', 'catks', 'cakst', 'cakts', 'cksta', 'cksat','cktsa','cktas','ckast','ckats','kstac','kstca', 'ksatc'、'ksact'、'kscta'、'kscat'、'ktsac'、'ktsca'、'ktasc'、 'ktacs', 'ktcsa', 'ktcas', 'kastc', 'kasct', 'katsc', 'katcs', 'kacst'、'kacts'、'kcsta'、'kcsat'、'kctsa'、'kctas'、'kcast'、 'kcats']

如果您发现自己受到重复的困扰,请尝试将数据放入没有重复的结构中,例如set:

>>> perms = [''.join(p) for p in permutations('stacks')]
>>> len(perms)
720
>>> len(set(perms))
360

感谢 @pst 指出,这不是我们传统上认为的类型转换,而是对set()构造函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中查找给定字符串的所有可能排列[重复] 的相关文章

  • UnicodeDecodeError:“utf-8”编解码器无法解码位置 14 中的字节 0xb9:起始字节无效

    我正在使用 Django REST 进行文件上传测试 Python3 6 2Django1 11djangorest框架 3 6 4Excel OSX 15 38 170902 操作系统 10 12 6 过去使用普通照片文件可以成功完成此操
  • Pygame 让精灵按照给定的旋转行走

    很久以前我做了一个Scratch脚本 我想用Pygame将其转换为Python 有很多示例显示图像的旋转 但我想知道如何更改精灵的旋转以使其沿给定方向移动 而不更改图像 这是我的暂存代码 这是我的 Pygame 精灵类 class Star
  • Pandas 在列级别连接数据帧时添加键

    根据 Pandas 0 19 2 文档 我可以提供keys参数来创建结果多索引 DataFrame 一个例子 来自 pandas 文档 是 result pd concat frames keys x y z 我将如何连接数据框以便我可以在
  • Colab 的使用限制持续多久?

    当我对同一帐户的两个笔记本同时使用两个 GPU 约半小时后 Colab 已 12 小时未运行 此消息不断弹出 由于 Colab 中的使用限制 您当前无法连接到 GPU 自从我上次使用 colab 以来已经过去了大约两个小时 但该消息仍然弹出
  • Python ElementTree 获取带有命名空间的属性

    我试图访问 XML 中的 def 所以在这个例子中我会得到Evolus Common PlainTextV2作为输出 我似乎无法弄清楚如何获取具有名称空间的属性 如果我想得到id它工作得很好 Python for content ns in
  • 监控培训课程如何运作?

    我试图理解使用之间的区别tf Session and tf train MonitoredTrainingSession 以及我可能更喜欢其中之一 似乎当我使用后者时 我可以避免许多 杂务 例如初始化变量 启动队列运行程序或设置文件编写器以
  • 检查列表是否已排序的 Pythonic 方法

    有没有一种Python式的方法来检查列表是否已经排序ASC or DESC listtimestamps 1 2 3 5 6 7 就像是isttimestamps isSorted 返回True or False 我想输入一些消息的时间戳列
  • Scapy:如何将新层(802.1q)插入现有数据包?

    我有一个数据包转储 想要将 VLAN 标记 802 1q 标头 注入到数据包中 怎么做 为了找到答案 我查看了Scapy 插入新层和记录问题 https stackoverflow com q 17259592 1381638 这确实很有帮
  • Python:绘制甘特图的模块

    有没有一个好的Python绘图模块甘特图 http en wikipedia org wiki Gantt chart 我试过了开罗情节 http linil wordpress com 2008 09 16 cairoplot 11 但它
  • 将带有 md5 消息摘要和 DESede/CBC/PKCS5Padding 的 3DES 加密的 java 代码转换为 python

    我有这个工作java代码 它使用3DES加密对密码进行加密 import java security MessageDigest import java util Arrays import java util Base64 import
  • 在 Python 中将嵌套字典位置作为参数传递

    如果我有一个嵌套字典 我可以通过索引来获取键 如下所示 gt gt gt d a b c gt gt gt d a b c 我可以将该索引作为函数参数传递吗 def get nested value d path a b return d
  • 如何在自定义 django 命令中抽象出命令代码

    我正在我的应用程序下编写自定义 django 命令management commands目录 目前我在该目录中有 6 个不同的文件 每个文件都有不同的命令来解决独特的需求 然而 有一些实用程序是它们所共有的 抽象出这些公共代码的最佳方法是什
  • Pandas 中的数据透视表小计

    我有以下数据 Employee Account Currency Amount Location Test 2 Basic USD 3000 Airport Test 2 Net USD 2000 Airport Test 1 Basic
  • 获取 python 模块的 2 个独立实例

    我正在与以非 OO 方式编写的 python 2 x API 进行交互 它使用模块全局范围来处理一些内部状态驱动的东西 在它不再是单例的情况下需要它 并且修改原始代码 不是我们的 不是一个选择 如果不使用单独解释器的子进程运行 有什么方法可
  • Django:显示管理员验证错误的自定义错误消息

    我正在使用 Django 1 2 4 我有一个模型 其中有一个需要验证的字段 当验证失败时 我想向用户显示自定义错误消息 模型编辑是在管理界面中完成的 这就是我目前正在做的事情 def clean fields self exclude N
  • Matplotlib:检查空图

    我有一个循环加载并绘制一些数据 如下所示 import os import numpy as np import matplotlib pyplot as plt for filename in filenames plt figure i
  • “yield item”与 return iter(items) 相比有何优点?

    在下面的示例中 resp results 是一个迭代器 版本1 items for result in resp results item process result items append item return iter items
  • gnuplot:第 1 行:无效命令

    stackoverflow 上可爱的人们大家好 我正在尝试使用 gnuplot 绘制数据 我首先阅读表格并提取我想要的数据 我将此数据写入 dat 文件 截至目前 我只是尝试通过命令行绘制它 但会添加必要的代码以在 python 脚本工作后
  • AES 在 cryptojs 中加密并在 python Crypto.Cipher 中解密

    使用 js CryptoJS 加密并使用 python crypto Cipher 解密时出现问题 这是我在js中的实现 附加 iv 与加密消息并使用 base64 进行编码
  • 如何从Python枚举类中获取所有值?

    我正在使用 Enum4 库创建一个枚举类 如下所示 class Color Enum RED 1 BLUE 2 我要打印 1 2 作为某处的列表 我怎样才能实现这个目标 您可以执行以下操作 e value for e in Color

随机推荐

  • 使用位移位求整数平方根的最快方法是什么?

    我一直在寻找最快的方法来计算数字 整数 的平方根 整数 我在维基百科中遇到了这个解决方案 它找到一个数字的平方根 如果它是一个完美的平方 或其最接近的下完美平方的平方根 如果给定的数字不是一个完美的平方 short isqrt short
  • 将 XML 转换为 C# 对象

    我需要从这些 xml 数据中获取 OrderID
  • 如何从handlebars.js部分加载多个模板

    有没有一种简单的方法可以使用handlebars js 加载包含多个模板的部分 就像使用mustache js 和来自 jonnyreeves 的 jQuery 插件 https github com jonnyreeves jquery
  • 使用 eclipse 的 Android multidex 支持库

    使用 Eclipse 可以使用 multidex 生成 Android 项目来创建多个 dex 文件 在网上搜索我发现如何使用 gradle 来做到这一点 但没有关于使用它 没有 gradle 的 Eclipse 看起来像ADT蚂蚁任务项目
  • VB.NET WebBrowser禁用javascript

    有没有办法在 vb net 中禁用 javascript webbrowser 对我有用 Private Function TrimScript ByVal htmlDocText As String As String While htm
  • 检测 Spring Boot 应用程序时的类路径问题

    我有一个 springboot 应用程序 我正在尝试使用 bytebuddy 来检测它 我遇到了我无法理解的类路径问题 首先 以下是这方面的其他文献 https github com raphw byte buddy issues 473
  • 如何在 Coq 中切换当前目标?

    是否可以切换当前目标或子目标来在 Coq 中进行证明 例如 我有一个这样的目标 来自 eexists 1 1 s gt 0 r1 r1 s1 s r3 r3 s2 我想做的是split并首先证明正确的连接 我认为这将给出存在变量的值 s 并
  • Apache Thrift 和 ZeroMQ 之间的区别

    据我了解 Apache Thrift 和 ZeroMQ 是属于不同类别的软件 并且很难进行比较 因为这是苹果与橘子的比较 但我不知道为什么它们属于不同的类别 它们不是都用于在不同的服务之间传递数据吗 这些服务可能用不同的语言编写 也可能不是
  • QT 以普通用户身份启动程序

    我的自动更新程序需要管理员权限才能运行 因为它会修改程序文件夹中的文件 这一切都很好 但是 更新完成后我想要我的updater exe开始myApplication exe but without管理员权限 我当前用于从 updater e
  • bitbucket web:突出显示或灰显的合并提交?

    我想知道为什么在 bitbucket webui 的提交视图中 我看到一些合并提交的 M 为灰色 而其他提交则为彩色 如何设置或如何检测它们 我无法找到有关此行为的任何文档 此行为基于提交评论 它必须包含以下行 Conflicts src
  • Visual Studio regex_iterator 错误?

    我使用的是 Visual Studio 2013 我发现了一个错误 我希望有人可以确认 string foo A nB rC n r vector
  • 如何从 RecyclerView 中的编辑文本获取数据?

    我有带有编辑文本的recyclerview 每行都有一个编辑文本 我在编辑文本中手动输入值 输入值后 我想在每一行中获取这些值 我想将这些值添加到主要活动中 recyclerview 中可能有 10 到 20 行 我想获取这些编辑文本中的所
  • 如何防止lombok被打包到Spring Boot jar中?

    如果您访问官方龙目岛 Maven 指南 http projectlombok org mavenrepo 你会发现它的范围应该是provided 当我使用从头开始创建一个新项目时启动 spring io http start spring
  • 带有 OpenGL 的 Qt MDI 应用程序:如何获取有效的屏幕截图?

    我有一个MDI http en wikipedia org wiki Multiple document interface用 Qt 编写的应用程序 一些子窗口包括QGLWidgets 即 OpenGL 上下文 其中最突出的是使用 Open
  • 如何修复尝试使用 Selenium 查找元素时引发的 TypeError?

    我正在尝试从网页上抓取所有链接 我正在使用 Selenium WebDriver 滚动并单击网页中的 加载更多 按钮 我正在尝试的代码如下所示 from selenium import webdriver from selenium web
  • 使用 Bash 删除文本文件中的列?

    我需要编写一个脚本 从 Finger 的输出中删除 Idle 列 gt finger Login Name TTY Idle Login Time Office Phone Billy Billy Howard con 6 55 Fri 1
  • NavigationView 栏材质在 iOS 15 上不可见

    在 iOS 15 上 一个带有NavigationView with inline模式不再显示您在导航栏上看到的模糊材质颜色 示例代码 struct ContentView View var body some View Navigatio
  • 将 python 包 Egg 存储在 Artifactory 中是个好主意吗?

    目前我正在开发自动化测试框架 该测试框架有不同的包 这些包将在不同的项目中引用 并且可能由开发人员在本地进行修改 我想管理 python 包 Eggs 我正在考虑使用 Artifactory 我试图寻找Python的Artifactory帮
  • iOS8 的 KeychainItemWrapper 崩溃

    我在用着钥匙串项目包装 https developer apple com library ios samplecode GenericKeychain Listings Classes KeychainItemWrapper m html
  • 在Python中查找给定字符串的所有可能排列[重复]

    这个问题在这里已经有答案了 我有一根绳子 我想通过更改该字符串中字符的顺序来生成该字符串的所有排列 例如 说 x stack 我想要的是这样的列表 l stack satck sackt 目前 我正在迭代字符串的列表强制转换 随机选取 2