如何生成列表的所有排列?

2023-12-11

如何生成列表的所有排列?例如:

permutations([])
[]

permutations([1])
[1]

permutations([1, 2])
[1, 2]
[2, 1]

permutations([1, 2, 3])
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]

Use itertools.permutations来自标准库:

import itertools
list(itertools.permutations([1, 2, 3]))

改编自here是如何演示itertools.permutations可能会实施:

def permutations(elements):
    if len(elements) <= 1:
        yield elements
        return
    for perm in permutations(elements[1:]):
        for i in range(len(elements)):
            # nb elements[0:1] works in both string and list contexts
            yield perm[:i] + elements[0:1] + perm[i:]

文档中列出了几种替代方法itertools.permutations。这是一个:

def permutations(iterable, r=None):
    # permutations('ABCD', 2) --> AB AC AD BA BC BD CA CB CD DA DB DC
    # permutations(range(3)) --> 012 021 102 120 201 210
    pool = tuple(iterable)
    n = len(pool)
    r = n if r is None else r
    if r > n:
        return
    indices = range(n)
    cycles = range(n, n-r, -1)
    yield tuple(pool[i] for i in indices[:r])
    while n:
        for i in reversed(range(r)):
            cycles[i] -= 1
            if cycles[i] == 0:
                indices[i:] = indices[i+1:] + indices[i:i+1]
                cycles[i] = n - i
            else:
                j = cycles[i]
                indices[i], indices[-j] = indices[-j], indices[i]
                yield tuple(pool[i] for i in indices[:r])
                break
        else:
            return

还有一个,基于itertools.product:

def permutations(iterable, r=None):
    pool = tuple(iterable)
    n = len(pool)
    r = n if r is None else r
    for indices in product(range(n), repeat=r):
        if len(set(indices)) == r:
            yield tuple(pool[i] for i in indices)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何生成列表的所有排列? 的相关文章

  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • JavaScript 中的埃拉托斯特尼筛法对大量数据无限运行

    我一直在尝试写埃拉托斯特尼筛法 http en wikipedia org wiki Sieve of EratosthenesJavaScript 中的算法 基本上我只是按照以下步骤操作 创建从 2 到 n 1 的连续整数列表 令第一个素
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • 删除近排序数组中未排序/离群元素

    给定一个像这样的数组 15 14 12 3 10 4 2 1 我如何确定哪些元素乱序并删除它们 在本例中为数字 3 我不想对列表进行排序 而是检测异常值并将其删除 另一个例子 13 12 4 9 8 6 7 3 2 我希望能够删除 4 和
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di

随机推荐

  • 如何使用 Scala XML 返回空 NodeSeq?

    我正在使用不同的函数分段构建 XML 例如以下示例
  • 学说错误:未找到“Doc​​trine\ORM\EntityRepository”类

    我是 Doctrine 的新手 我正在遵循文档中的示例 当我创建 Repository 类 例如 UserRepository php 并尝试扩展 EntityRepository 类时 我收到以下错误消息 致命错误 在第 10 行的 C
  • 直接从浏览器打印,无需打印弹出窗口[重复]

    这个问题在这里已经有答案了 正如主题中所说 我必须为基于 Web 的应用程序创建一个功能 该功能将允许用户直接发送打印而不提示任何对话框 只需使打印 即单击并打印 变得简单 但不适合我 请建议什么是最好的选择以及我应该如何写它 技术 请建议
  • std::remove 不起作用

    我的测试程序的目标是擦除简单字符串向量中的单元格 如下所示 程序失败 分段错误 static void display std vector
  • 如何使用 PuPHPet 制作 Sequel Pro?

    我刚刚使用 Vagrant 和 Puphpet 设置了一个虚拟机 我知道我有 MySQL 因为我可以mysql在命令行中 我刚刚进行了基本安装 我不知道如何设置我的续集专业版才能访问 我在 Sequel Pro 应用程序上使用 标准 选项
  • Nestjs 到 Azure Windows 应用程序服务 - web.config 设置

    从昨天开始 我一直在尝试将 Nestjs api 部署到 azure 但没有成功 起初 我试图将其推送到 Linux 云服务计划 并能够从 vs code 部署它 在 azure 日志中看到该应用程序已成功启动 但它不会从我的端点返回任何数
  • 迭代简短的固定字符串列表[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 在 C 中迭代简短的文字字符串列表 其中所有元素都是预先知道的 的最有效 优雅 惯用的方法是什么 可以用向量来完成 for auto color std vector
  • 如何以编程方式为 UIButton 提供光泽外观?

    我想为某些 iPhone UIButtons 添加 3D 或光泽外观 但这样做时不使用 PNG 或可拉伸图像 我有很多不同形状和大小的按钮 其中有很多颜色是动态生成的 因此预渲染图像在我的情况下不可行 您将如何以编程方式在这些按钮上绘制光泽
  • 在 catch 处理程序中打印异常回溯的可靠方法?

    我想在我的 C 程序中启用异常的完整日志记录 我想做的就是在 seh catch handler 中捕获软件 硬件异常 然后打印异常的完整回溯 我主要对异常的起源感兴趣 调用堆栈对我来说就足够了 try difficult task exc
  • 如何使用 UIScrollView 实现 UIPageViewController?

    我拿了照片滚动来自苹果网站的示例 并尝试通过复制代码来实现我自己的专辑 现在UIScrollView不可见 我该如何让它出现 我所做的唯一代码更改是创建UIPageViewController 就我而言 这是一个UIViewControll
  • 退出时保存应用程序数据状态

    我有一个包含 24 个字符串的 NSMutableArray 如果用户接到电话或退出应用程序 我需要保存这些数据 我一直在研究很多例子 但由于某种原因似乎无法确定保存数据的最佳方法 24 个字符串对应 24 个按钮及其状态 单击按钮时 它会
  • 在 Sencha Touch 2 中从商店加载轮播?

    有没有人有一个代码示例 可以从商店 在我的例子中是 JSON 商店 加载 Sencha Touch 2 Carousel 组件 我了解如何加载扩展 DataView 的列表 但 Carousel 似乎是一个更难解决的问题 因为它不扩展 Da
  • C# 中 AppDomain 的使用

    C 中 AppDomains 最重要的用途是什么 The 最重要的一个使用的是你的代码必须有一个 即您用 C 编写的所有内容都在AppDomain 这非常重要 p 如果你的意思是额外的应用程序域 当使用插件和其他不受信任的代码时 它允许您隔
  • 是否可以将 html get 请求从 create-react-app 代理到 /graphql ?

    我有一个 create react app 应用程序 在其中通过添加以下内容来启用代理 proxy http localhost 3001 到我的 package json 这对于对 graphql 的 API 请求效果很好 但是当 Web
  • CodeIgniter 未加载页面

    我有一个使用 codeigniter 开发的 Web 应用程序 它在我以前的服务器中运行良好 现在我更改了我的服务器 当我尝试运行该 Web 应用程序时 除了空白屏幕之外什么也没有 当我尝试打开现有链接时http mydomain com
  • 是否有用于创建茎叶图的 pandas 函数

    有没有相当于R的pandasstem 用于为数字创建茎叶图的函数Series 我可以轻松编写一些代码 但想知道我是否错过了精美手册中的某些内容 输出示例 16 070355555588 18 000022233333335577777777
  • java 将字符串月份转换为整数

    如何将月份字符串转换为整数 在单击方法中 我想显示所选的日期 但如果该日期有事件 它应该显示有关该事件的更多信息 检查假期事件的方法需要整数值 这是代码 UPDATED Override public void onClick View v
  • 我如何使用 awk 打印多个分隔符单词? [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我有一个带有正则表达式分隔符的 awk 我需要提取名字和姓氏的单词 但是这个命令不起作用 awk v OFS t v FS firstName lastName sum 1 2 print
  • 将 Uint8List 转换为文件

    我正在使用图像选择器网络 效果很好 我可以在中显示图像Image memory 但是此图像的格式为 Uintlist8 为了保存在存储需要格式File 我的问题是如何将图像保存在Firebase 存储 网页图像选择器 class Secon
  • 如何生成列表的所有排列?

    如何生成列表的所有排列 例如 permutations permutations 1 1 permutations 1 2 1 2 2 1 permutations 1 2 3 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3