N 选择列表的 N/2 个子列表

2023-12-15

Python中有没有一种有效的方法来获取大小列表的所有分区n分成两个大小子集n/2?我想获得一些迭代构造,以便每次迭代提供原始列表的两个不重叠的子集,每个子​​集都有大小n/2.

例如:

A = [1,2,3,4,5,6]    # here n = 6
# some iterative construct
    # in each iteration, a pair of subsets of size n/2
    # subsets = [[1,3,4], [2,5,6]] for example for one of the iterations
    # subsets = [[1,2,5],[3,4,6]] a different iteration example

子集应该是不重叠的,例如[[1,2,3], [4,5,6]]是有效的,但是[[1,2,3], [3,4,5]]不是。两个子集的顺序并不重要,例如[[1,2,3], [4,5,6]]不算作不同于[[4,5,6], [1,2,3]]因此,迭代中只应出现这两者之一。每个子集中的顺序也并不重要,所以[[1,2,3], [4,5,6]], [[1,3,2], [4,5,6]], [[3,2,1], [6,5,4]]等都算作相同的,因此在整个迭代中只应显示其中一个。


你会想要使用itertools.combinations去做这个。输入是您要从中选择项目的列表,第二个是要选择的项目数。

result = [list(item) for item in itertools.combinations(input, len(input) // 2)]

对于输入[1,2,3,4]这产生

[[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]

As @ShadowRanger 指出,如果顺序在您的列表中很重要并且您想要所有排列,您将需要替换itertools.permutations进入溶液。

result = [list(item) for item in itertools.permutations(input, len(input) // 2)]
# [[1, 2], [1, 3], [1, 4], [2, 1], [2, 3], [2, 4], [3, 1], [3, 2], [3, 4], [4, 1], [4, 2], [4, 3]]

Edit

仔细阅读您的问题后,不清楚您是否想要所有n/2像我已经展示的排列或者你想要一个列表列表,其中每个元素还another排列的两个“一半”的列表。

为了实现这一点,您可以执行以下操作(结合一些索引帮助来自@Blckknght)

result = [[list(item[::2]), list(item[1::2])] for item in itertools.permutations(input)]

在这种情况下,输出[1,2,3,4]将会

[[[1, 3], [2, 4]], [[1, 4], [2, 3]], [[1, 2], [3, 4]], [[1, 4], [3, 2]], [[1, 2], [4, 3]], [[1, 3], [4, 2]], [[2, 3], [1, 4]], [[2, 4], [1, 3]], [[2, 1], [3, 4]], [[2, 4], [3, 1]], [[2, 1], [4, 3]], [[2, 3], [4, 1]], [[3, 2], [1, 4]], [[3, 4], [1, 2]], [[3, 1], [2, 4]], [[3, 4], [2, 1]], [[3, 1], [4, 2]], [[3, 2], [4, 1]], [[4, 2], [1, 3]], [[4, 3], [1, 2]], [[4, 1], [2, 3]], [[4, 3], [2, 1]], [[4, 1], [3, 2]], [[4, 2], [3, 1]]]

Edit2

由于顺序并不重要,但您想要一种类似于上一种方法(列表的列表的列表)的方法,因此由于数组切片,最后一种方法有点棘手。一种替代方法是使用set and frozenset构造初始信息(而不是列表),因为在set检查相等性时顺序并不重要。这将自动允许我们删除重复项。然后,如果您愿意,我们可以添加一个额外的步骤来转换回列表。

from itertools import permutations
tmp = set([frozenset([frozenset(k[::2]),frozenset(k[1::2])]) for k in permutations(input)]) 
result = [[list(el) for el in item] for item in tmp];

这将产生

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

N 选择列表的 N/2 个子列表 的相关文章

  • Django:NoReverseMatch at /'myapp'不是注册的命名空间

    我在模板渲染期间遇到此错误 我想做的是允许用户上传 csv 然后将数据处理到模型中 第 109 行出错 myapp 不是已注册的命名空间 这是我的第 109 行代码
  • 创建一个支持 json 序列化的类以与 Celery 一起使用

    我正在使用 Celery 来运行一些后台任务 其中一项任务返回我创建的 python 类 考虑到有关使用 pickle 的警告 我想使用 json 来序列化和反序列化此类 有没有一种简单的内置方法可以实现这一目标 该类非常简单 它包含 3
  • pandas 读取列中带有额外逗号的 csv

    我正在阅读一个基本的 csv 文件 其中各列用逗号分隔 列名称如下 userid username body 但是 正文列是一个可能包含逗号的字符串 显然这会导致一个问题 pandas 会抛出一个错误 CParserError Error
  • Python Flask 删除请求

    我正在开发一个 Python 应用程序并使用 Flask 这是我的 DELETE 函数 app route DeleteMessage methods DELETE def DeleteMessage messages Message qu
  • Python:访问另一个类中一个类的属性和方法

    假设我有两个 A 类和 B 类 Class A A s attributes and methods here Class B B s attributes and methods here 现在我可以评估 B 类对象中 A 的属性 如下所
  • Django CollectStatic 启动大文件上传时管道损坏

    我正在尝试使用collectstatic将静态文件上传到我的S3存储桶 但我收到一个700k javascript文件的管道损坏错误 这就是错误 Copying Users wedonia work asociados server aso
  • 如果每个元组中的第二项重复,如何从元组列表中删除元素?

    如果每个元组中的第二项重复 如何从元组列表中删除元素 例如 我有一个按第一个元素排序的列表 如下所示 alist 0 7897897 this is a foo bar sentence 0 653234 this is a foo bar
  • 在 Python 中解压存档时出现错误

    我使用 Python 下载 bz2 文件 然后我想使用以下方法解压存档 def unpack file dir file cwd os getcwd os chdir dir print Unpacking file s file cmd
  • 为什么 scikit-learn SVM.SVC() 非常慢?

    我尝试使用SVM分类器来训练大约10万个样本的数据 但我发现它非常慢 甚至两个小时后也没有任何反应 当数据集有大约 1k 个样本时 我可以立即得到结果 我还尝试了 SGDClassifier 和朴素贝叶斯 速度相当快 几分钟内就得到了结果
  • 如何为 PyYAML 编写代表程序?

    我想要一个自定义函数来序列化任意 python 对象 就像 json dump 函数有一个名为 default 的可选参数 如果对象不是 json 可序列化的 它应该是 json 转储器将调用的函数 我只是想从 json 包中执行相当于此操
  • 将 postgres 连接到 django 时遇到问题

    以下文档来自Django Postgres 文档 https docs djangoproject com en 4 1 ref databases postgresql notes我添加到我的settings py 在我设置的设置中 DA
  • 使用 SQLAlchemy 查询 Pandas DataFrame 时重命名列

    当您将数据查询到 pandas 数据帧时 有没有办法保留 SqlAlchemy 属性名称 这是我的数据库的简单映射 对于 school 表 我将数据库名称 SchoolDistrict 重命名为较短的 district 我从 DBA 中删除
  • python请求ssl握手失败

    每次我尝试这样做 requests get https url 我收到这条消息 import requests gt gt gt requests get https reviews gethuman com companies Trace
  • 如何忽略 Sentry 捕获中的某些 Python 错误

    我已将 Sentry 配置为捕获 Django Celery 应用程序中的所有错误 它工作正常 但我发现一个令人讨厌的用例是当我必须重新启动我的 Celery 工作人员 PostgreSQL 数据库或消息服务器时 这会导致数千种各种 无法访
  • 折叠 numpy 数组除前两个维度之外的所有维度

    我有一个可变维度的 numpy 数组 例如它可以具有以下形状 64 64 64 64 2 5 64 64 40 64 64 10 20 4 我想要做的是 如果维数大于 3 我想将其他所有内容折叠 堆叠到第三维中 同时保留顺序 因此 在我上面
  • 如何循环遍历列表中除最后一项之外的所有项? [复制]

    这个问题在这里已经有答案了 Using a for循环 如何循环遍历列表中除最后一项之外的所有项 我想遍历一个列表 检查每个项目与后面的项目 我可以在不使用索引的情况下做到这一点吗 for x in y 1 If y是一个生成器 那么上面的
  • Spacy-nightly (spacy 2.0) 问题“thinc.extra.MaxViolation 大小错误”

    显然成功安装了 spacy nightly spacy nightly 2 0 0a14 和英语模型 en core web sm 后 我在尝试运行它时仍然收到错误消息 import spacy nlp spacy load en core
  • tkinter 库 treectrl 转换为 exe 安装程序时出现 cx_freeze 错误

    我使用的是 python 版本 3 7 我使用了这个名为 treectrl 的外部库 当我运行 py 文件时它工作得很好 但是当我使用 cx freeze 转换为 exe 文件时 它给了我错误 NomodulleFound 名为 tkint
  • Maya python 连接选择的属性

    我一直在尝试制作一个简单的脚本 它将采用两个视口选择 然后基本上将第二个视口的旋转连接到第一个 我不确定如何正确地从视口选择中为对象创建变量 这是我的尝试 但不起作用 import maya cmds as cmds sel cmds ls
  • 定义Python类时,如何在其中设置随机变量?

    假设我有一个名为Person 其中只有该人的姓名和性别 性别应从男性和女性中随机选择 为此 我导入random randint 功能 根据随机int确定随机性别 import random class Person alias random

随机推荐

  • 为Nextjs动态路由添加前缀

    我定义了很多路由 其中 一条路由专用于用户配置文件 每个用户都有一个可通过 HTTP example com username 访问的公共配置文件 我尝试过创建文件pages username js但它似乎不起作用 有没有办法在不通过用户名
  • 当主键具有不同名称时,如何使用 TPT 继承模型?

    针对旧数据库使用 Entity Framework 4 1 我无法生成一组非复数的 TPT 继承模型工作集 并且对公共主键使用不同的名称 我正在使用数据库表 组织 帐户 和 公司 如下所示 Organization Organization
  • 在 VBScript 中读取音乐文件长度

    我只是想知道是否有一种方法可以通过 VBScript 将 mp3 文件的长度以秒为单位获取到变量中 改编自我的答案关于 JScript 的类似问题 您可以使用GetDetailsOfWindows Shell 的方法Folder对象获取音频
  • 将 WordPress jQuery 添加到自定义页面模板

    我有一个插件 它有一个下面的自定义页面模板 该模板需要 jQuery 我有一个变量 link to js 喜欢 google 库 但我希望它将它链接到 WordPress 内部 jQuery 库
  • 如何在 html 片段的 X 段之后插入文本字符串? [复制]

    这个问题在这里已经有答案了 可能的重复 如何用PHP解析和处理HTML content p This is the first paragraph p p This is the second paragraph p p This is t
  • WCF 服务的 SOAP 消息的服务器端跟踪

    我正在努力追随本教程为我的 WCF 服务配置服务器端 SOAP 跟踪 以及MSDN 文档 当我运行测试时 我在 Microsoft 服务跟踪查看器中看到活动 00000000 但消息选项卡为空 C temp Web tracelog svc
  • 排除CDH中spark-core的依赖

    我正在使用 Structured Spark Streaming 写入来自 Kafka 的 HBase 数据 我的集群发行版是 Hadoop 3 0 0 cdh6 2 0 我使用的是 Spark 2 4 0 我的代码如下 val df sp
  • 数据仓库模式:在DWH中直接链接事实表可以吗?

    在DWH中直接链接事实表可以吗 据我了解 在星系模式中事实表没有链接 它们只是有共同的维度表 但是 如果有一个 DWH 模式假设直接链接它们呢 IMO 他们不应该这样做 即使他们可以 事实表通常很大 可能有数十亿行 并以一定的粒度保存度量
  • 使用 ruby​​ 从 html 文档中删除空格

    所以我有一个红宝石字符串 类似于 str n n n n n n n n h1 My Page h1 n n div n p Here is a para graph It can contain spaces that should no
  • bootBuildImage 可以创建可写卷吗?

    给定一个将文件写入的 Spring Boot 应用程序 var lib app files 我使用 gradle 任务创建一个 docker 映像 gradlew bootBuildImage imageName app latest 然后
  • C# - Ninject、IoC 和工厂模式

    我有一个控制台应用程序 我需要根据用户的输入执行某个功能 如果用户输入 功能 1 gt 我执行功能 1 依此类推 我正在尝试尽可能干净和通用地编写这个项目 并且我想使用IoC and SOLID概念 我有点卡住了 到目前为止我所拥有的 pu
  • 如何在 MySql 选择查询中将 UTC 日期转换为本地时区

    我在 MySql 数据库的一个查询中使用此Where 条件 我的问题是我的表中有一个显示时间列 但该表列显示 UTC 时间的数据 我想将该显示时间列转换为当地时间Zone so 我如何从查询本身提供此功能 我凝视着这些东西 据此我知道类似的
  • Android应用内购买:签名验证失败

    我已经尝试了几天来使用SDK附带的Dungeons演示代码来解决这个问题 我尝试用谷歌搜索答案 但找不到 在 地下城 演示中 我从开发控制台传递了我的公钥 对 apk 进行签名并上传到控制台而不发布 对两者进行测试android test
  • 如何打印嵌套的 xml 元素?

    示例 XML
  • 我们可以用javascript连接数据库吗

    是否可以用javascript连接数据库 是的 一点没错 看看 DBSlayer http code nytimes com projects dbslayer wiki 它由 纽约时报 开发 用于管理其高负载 是一个 HTTP JSON
  • 在 R 版本 3.4.4 中使用 R 包“effects”

    目前 我使用的是 R 版本 3 4 4 我正在尝试使用 R 包 效果 但我无法在此版本上安装和使用此软件包 code install packages effects library effects plot allEffects lm g
  • 如何检索 MySQL 数据库管理系统 (DBMS) 的当前版本?

    什么命令返回 MySQL 数据库的当前版本 试试这个功能 SELECT VERSION gt 5 7 22 standard 版本 或者了解更多详细信息 请使用 SHOW VARIABLES LIKE version Variable na
  • History.back() 在 iOS 上的 Safari 中不起作用

    我的应用程序基于 AngularJS 1 2 3 该应用程序作为 iOS 的 Web 应用程序启用 该应用程序包含带有 onclick 处理程序的后退按钮 代码如下 history length history back 我也尝试过使用hi
  • 为什么我的 jquery 输入掩码不起作用?

    我正在尝试使用 jQuery 输入掩码插件 jquery maskedinput 1 3 min js 并且我搜索了几个示例 解决方案 并且我的代码与其他工作示例完全相同 但它根本不会为我工作 请记住 我的代码现在只是测试这个插件 尝试让它
  • N 选择列表的 N/2 个子列表

    Python中有没有一种有效的方法来获取大小列表的所有分区n分成两个大小子集n 2 我想获得一些迭代构造 以便每次迭代提供原始列表的两个不重叠的子集 每个子 集都有大小n 2 例如 A 1 2 3 4 5 6 here n 6 some i