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

Python在一行中消除了带有不可散列元素的列表重复项

涂飞航
2023-03-14
问题内容

这个问题已经在这里有了答案

8年前关闭。

可能重复:
Python:从列表列表中删除重复项

说我有清单

a=[1,2,1,2,1,3]

如果a中的所有元素都是可散列的(如在这种情况下),则可以完成以下工作:

list(set(a))

但是,如果

a=[[1,2],[1,2],[1,3]]


问题答案:

Python 2

>>> from itertools import groupby
>>> a = [[1,2],[1,2],[1,3]]
>>> [k for k,v in groupby(sorted(a))]
[[1, 2], [1, 3]]

在Python 3中也可以使用,但要注意所有元素必须是可排序类型。



 类似资料:
  • 我需要比较两个列表,以便创建在一个列表中找到的特定元素的新列表,而不是在另一个列表中。例如: 我想在列表_1中循环,并将列表_2中未在列表_1中找到的所有元素附加到主列表。 结果应该是: 用python怎么做?

  • 用集合 list(set(l)) 用字典 l1 = ['b','c','d','b','c','a','a'] l2 = {}.fromkeys(l1).keys() print l2 用字典并保持顺序 l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) l2.sort(key=l1.index) print l2 列表推导式 l1 =

  • 假设我有一个由n个字符串列表组成的列表: result->包含所有输出列表(所有组合) current->是当前的组合 用上述相同示例调用此函数时的输出:

  • 我有一个包含字符串的元组列表,例如: 现在我希望将每个字符串连接在一个元组中以创建一个以空格分隔的字符串列表。我使用了以下方法: 它工作得非常好。 然而,我的列表有超过一百万个元组。所以我的问题是,这种方法是否足够有效,或者是否有更好的方法来做到这一点。谢谢。

  • 问题内容: 给出以下列表: 我想将[a]的每个元素重复其在[b]中的对应位置的编号,以产生此结果: 即0发生1次,5发生2次,1发生1次。 问题答案: 内容如下: -重复elem次 从两个列表中组成一个2元组的列表,将每个元素与另一个列表中的对应元素配对。这为您提供了用例中需要传递给的确切信息。 -将迭代器的结果列表展平为单个值列表。您既可以像我一样,也可以像马丁·彼得斯那样。

  • 问题内容: 如果想基于每个嵌套列表的第一个元素评估重复项,谁能提出一个好的解决方案从嵌套列表中删除重复项? 主列表如下所示: 如果已经在第一位置出现了另一个具有相同元素的列表,那么我想删除该列表并得到以下结果: 您可以建议一种算法来实现此目标吗? 问题答案: 您是否关心保留订单/删除了哪些重复项?如果不是,则: 会做的。如果您想保留订单并想保留第一个订单,则: