从二维列表中获取唯一元素

2024-01-12

我有一个二维列表,我像这样创建:

Z1 = [[0 for x in range(3)] for y in range(4)]

然后我继续填充这个列表,这样Z1看起来像这样:

[[1, 2, 3], [4, 5, 6], [2, 3, 1], [2, 5, 1]]

我需要提取unique 1x3要点Z1,不考虑顺序:

Z2 = makeUnique(Z1) # The solution

的内容Z2应该看起来像这样:

[[4, 5, 6], [2, 5, 1]]

正如你所看到的,我认为[1, 2, 3] and [2, 3, 1]重复,因为我不关心顺序。

另请注意,单个数值可能在元素中出现多次(例如[2, 3, 1] and [2, 5, 1]);只有当所有三个值一起出现多次(以相同或不同的顺序)时,我才认为它们是重复的。

我搜索了数十个类似的问题,但似乎没有一个能解决我的确切问题。我是一个完全的 Python 初学者,所以我只需要朝着正确的方向推动。

我已经尝试过:

Z2= dict((x[0], x) for x in Z1).values() Z2= set(i for j in Z2 for i in j)

但这不会产生所需的行为。

非常感谢您的帮助!

路易斯·瓦朗斯


如果子列表中元素的顺序does not没关系,你可以使用以下内容:

from collections import Counter

z1 = [[1, 2, 3], [4, 5, 6], [2, 3, 1], [2, 5, 1]]

temp = Counter([tuple(sorted(x)) for x in z1])

z2 = [list(k) for k, v in temp.items() if v == 1]
print(z2)  # [[4, 5, 6], [1, 2, 5]]

一些备注:

  • 排序生成列表[1, 2, 3] and [2, 3, 1]从示例中相等,因此它们按Counter
  • 投射到tuple转换为lists 是可散列的,因此可以用作dictionary key.
  • the Counter创建一个dicttuple上面创建的键和值等于它们在原始文件中出现的次数list
  • 决赛list-comprehension取出所有这些键Counter dictionary计数为 1。

如果订单does没关系,您可以使用以下内容代替:

z1 = [[1, 2, 3], [4, 5, 6], [2, 3, 1], [2, 5, 1]]

def test(sublist, list_):
    for sub in list_:
        if all(x in sub for x in sublist):
            return False
    return True

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

从二维列表中获取唯一元素 的相关文章

随机推荐

  • 接受表单元素作为方法参数?

    我正在编写一个方法 它将截取传递的表单元素的屏幕截图并将其打印出来 我面临一些挑战 我希望能够使这个方法足够通用 以接受几乎任何类型的表单元素 我将 元素 参数设置为 对象 类型 我想我还需要传递一个 类型 参数 或者有没有办法弄清楚对象传
  • telerik radGrid - 在排序/分页/过滤器上保留客户端状态

    即使在这个阿贾克斯例子 http demos telerik com aspnet ajax grid examples hierarchy nestedviewtemplate defaultcs aspx我真的很喜欢它的外观 当顶层网格
  • 如何通过 from_avro 标准函数使用 Confluence Schema Registry? [复制]

    这个问题在这里已经有答案了 My Kafka 和 Schema Registry 基于 Confluence Community Platform 5 2 2 My Spark 版本为 2 4 4 我使用以下命令启动 Spark REPL
  • 使用 getter/setter 与“告诉,不要问”?

    只讲原则 不问原则here http pragprog com articles tell dont ask当我使用 getter 或 setter 时 经常会粘贴到我身上 人们告诉我不要使用它们 该网站清楚地解释了我应该做什么和不应该做什
  • 如何通过深度链接传递数据?

    我的应用程序中有一个报价列表 每个列表项上都有一个共享按钮 当任何用户单击共享链接时 我正在使用深层链接打开我的应用程序的报价详细信息活动 我处于以下情况当有人点击链接时 我的详细信息页面活动就会被触发 但是我怎么知道 当有人点击共享深层链
  • C++ 检查大括号是否匹配

    我被要求作为一项额外的编程挑战 看看大括号是否在随机字符串或字符中匹配 如下所示 1 1 将返回 1 而 1 1 将返回 0 这是我到目前为止所拥有的 但它似乎没有做任何事情 任何帮助都会很棒吗 谢谢 bonus cpp include
  • Tkinter - 将文本插入画布窗口

    我有一个 Tkinter 画布 其中填充了文本和画布窗口或小部件 使用create text and create window方法 我放置在画布上的小部件是文本小部件 我想在创建和放置它们后将文本插入其中 我不知道如何做到这一点 如果可能
  • 如何对数据框中的列进行重新排序?

    如何更改此输入 顺序为 时间 输入 输出 文件 Time In Out Files 1 2 3 4 2 3 4 5 对于此输出 顺序为 时间 输出 输入 文件 Time Out In Files 1 3 2 4 2 4 3 5 这是虚拟 R
  • 使用 urllib 发出 post 请求

    我正在尝试向 API 提供商提出请求 curl https api infermedica com dev parse X POST H App Id 4c177c H App Key 6852599182ba85d70066986ca2b
  • 如何将第三方 javascript 库与 ionic4 和电容器一起使用?

    使用 Ionic 4 Angular 应用程序和 Capacitor 安装第三方 javascript 库的正确方法是什么 我尝试安装克鲁克图书馆 https github com jackedgson crunker如下 npm inst
  • Angular 2 中不同页面的多种布局

    我有一个登录页面 只有 2 个输入 无页眉 无页脚 无侧边栏 当用户登录时 他应该导航到带有页眉 页脚和右侧导航栏的页面 内页唯一改变的是右侧内容 import Component from angular core import View
  • Android Studio 中相对布局问题中按钮顶部的进度条

    好吧 这是一个奇怪的问题 我希望有人能向我解释一下 我有一个自定义按钮布局 它创建一个按钮 按钮中间有一个圆形进度条 我的 XML 代码如下 然而我无法解决的是ProgressBar似乎出现在按钮后面 如果我将按钮背景设置为透明以外的任何内
  • Spring Boot 组件扫描不起作用

    我创建了一个示例 Spring Boot 应用程序 当服务类全部位于一个包中时 该应用程序运行得非常好 但如果服务类引用不同包中的另一个服务类 那么我会收到 BeanCreationException 应用程序的代码如下 主程序 java
  • GLEW:Apple Mach-O 链接器 (Id) 错误

    我试图在我的 Xcode 项目中使用 glew 但我得到了这个 Apple Mach O Linker Id Error Undefined symbols for architecture x86 64 我正在使用从他们下载的最新版本的g
  • Protocol buffers 从原始消息中检测类型

    是否可以检测原始协议缓冲区消息的类型 以字节 为单位 我遇到的情况是端点可以接收不同的消息 并且我需要能够在反序列化之前检测到类型 我正在使用 protobuf net 您无法单独检测类型 因为 protobuf 规范不会为此向流添加任何数
  • 如何使用presto查询hive数据

    我刚刚安装了 presto 当我使用 presto cli 查询 hive 数据时 出现以下错误 presto server node6 8080 catalog hive schema default presto default gt
  • Xcode 9 - 无法附加到 pid 进行框架单元测试

    使用时间机器从一台 Mac 迁移到另一台 Mac 后 我收到以下错误 无法附加到 pid 确保 项目标题 尚未运行 并且 系统用户名 有调试权限 仅当运行 任何 框架项目的单元测试时才会发生该错误 在模拟器和设备上运行应用程序效果很好 为应
  • 在 C# 中从 LINQ 提取 SQL 列扩展属性

    我有一个 SQL 表 每列都有扩展属性 有没有办法使用 Linq2SQL 从 C 中的 LINQ 访问这些 像 MS Description 之类的东西 不 据我所知 您可以编写一个与数据库中的存储进行对话的 SP 获取数据库对象名称和列名
  • 找不到 Storm 日志查看器页面

    我可以在多租户集群中提交拓扑作业 作业正在运行 但是 日志查看器页面不可用 有什么办法可以解决这个问题吗 在单击之前您需要启动日志查看器topology port查看日志查看器 要启动日志查看器 请运行 storm logviewer和你跑
  • 从二维列表中获取唯一元素

    我有一个二维列表 我像这样创建 Z1 0 for x in range 3 for y in range 4 然后我继续填充这个列表 这样Z1看起来像这样 1 2 3 4 5 6 2 3 1 2 5 1 我需要提取unique 1x3要点Z