当前位置: 首页 > 面试题库 >

python中列表列表的集合

姚高爽
2023-03-14
问题内容

我有一个 清单清单

mat = [[1,2,3],[4,5,6],[1,2,3],[7,8,9],[4,5,6]]

我想转换为一个 集合, 即删除重复列表并从中创建一个仅包含 唯一 列表的新列表。

在上述情况下,所需答案将是

[[1,2,3],[4,5,6],[7,8,9]]

但是当我这样做时set(mat),它给了我错误

TypeError:无法散列的类型:“列表”

你能解决我的问题吗?提前致谢!


问题答案:

由于列表是可变的,因此不能进行哈希处理。最好的选择是将它们转换为元组并形成一个集合,像这样

>>> mat = [[1,2,3],[4,5,6],[1,2,3],[7,8,9],[4,5,6]]
>>> set(tuple(row) for row in mat)
set([(4, 5, 6), (7, 8, 9), (1, 2, 3)])

我们一次遍历mat一个列表,将其转换为一个元组(它是不可变的,因此sets很酷)并将生成器发送到该set函数

如果要将结果作为列表列表,则可以通过将set函数调用的结果转换为列表来将其扩展为列表,如下所示

>>> [list(item) for item in set(tuple(row) for row in mat)]
[[4, 5, 6], [7, 8, 9], [1, 2, 3]]


 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 从列表列表中删除重复项 (12个答案) 4年前关闭。 这是我的两个清单。 我的输出应为以下内容; 如何获得此输出? 先感谢您 问题答案: 您将必须将列表转换为元组列表,然后使用交集。请注意,下面的解决方案可能具有不同顺序的元素,并且由于我使用的是set,因此显然不会存在重复项。 您也可以将交叉点保存在变量中并获取最终列表,如果需要排序,则需要重复: 和交

  • 问题内容: 比较两个列表/集合并输出差异的最简单方法是什么?是否有任何内置函数可以帮助我比较嵌套列表/集? 输入: 预期产量: 问题答案: 因此,您需要两个项目列表之间的区别。 首先,我将每个列表列表变成一个元组列表,这样,由于元组是可哈希化的(列表不是),因此您可以将元组列表转换为一组元组: 然后可以进行设置: 编辑(由sdolan建议):您可以在一个列表中为每个列表完成最后两个步骤: 注意:是

  • 我有包含项目数组的类存储。 每个项目(类项目)有不同的体积,我正在添加项目到商店。假设我有20个项目,我把10个添加到2或3个不同的商店,我必须根据这些项目的数量在商店中排序。

  • 问题内容: 我有一个这样的元组列表: 而且我需要将所有元组的交集合并起来。 那就是相交的元组是迭代地联合的。 我试图将元组转换为集合,然后采用交集,但没有用。任何想法? 问题答案: 这是网络问题,使用

  • 问题内容: 我正在使用python进行游戏,并且能够得到两个列表的交集: 现在,如果一个列表包含和并包含第三个元素,是否有一个内置函数来查找内部所有三个列表的交集?例如 那么结果应该是 问题答案: 对于2.4,您只需定义一个交集函数。 对于较新版本的python: 相交方法接受任意数量的参数 或者,您可以将第一个集合与其自身相交,以避免切片列表并进行复制: 我不太确定哪种方法会更有效,并且感觉这将

  • 问题内容: 我想从列表列表中删除所有重复列表。 所以我有一个这样的清单清单。 我希望有: 我不知道该怎么办。 谢谢 问题答案: 您可以使用一组: 或者,如果您更喜欢列表推导/生成器: 最后,如果顺序很重要,则可以始终对b进行排序: