在python中删除重复整数

2024-10-16 20:48:54 发布

您现在位置:Python中文网/ 问答频道 /正文

作为一名python初学者,我在这一点上碰到了一堵墙,无法理解它

我试图做的是能够在多个列表中选择整数,并删除其中的重复项。然后制作一份不包含副本的副本列表

def my_function(x):
    return list(dict.fromkeys(x))
liss = [[1,2],[3,4,5,6],[1,4,3,99]]
list2 = my_function(str(liss))

list1 = [x for i in list2 for x in i]
print(list1)

Tags: in列表forreturnmydef副本function
2条回答

考虑使用集合理解:

>>> xss = [[1, 2], [3, 4, 5, 6], [1, 4, 3, 99]]
>>> xs_no_dups = list({x for xs in xss for x in xs})
>>> xs_no_dups
[1, 2, 3, 4, 5, 6, 99]

请编写代码以实现名为“合并排序”的算法

你可以点击这些链接阅读merge-sort上的wikipedia page

编写代码以完成以下任务:

  1. 对每个列表进行排序。例如[4, 2, 1, 2, 5, 0]变成[0, 1, 2, 3, 4, 5]
  2. 合并已排序的列表。例如,合并[1, 3, 4, 9][2, 6, 20]以形成[1, 2, 3, 4, 6, 20]
  3. 从左到右遍历最终排序的合并列表。如果当前元素与上一个元素不同,则输出当前元素

考虑下面的列表,名为{{CD6>}:

OUTPUTS (VALUES)      [1, 1, 1, 5, 5, 6, 9, 9, 9, 9, 14, 14, 14]
 INPUTS (INDICIES)     0  1  2  3  4  5  6  7  8  9  10  11  12

从左到右浏览列表

请注意the_list[0]1
1以前从未见过。
因此,您应该将1发送到输出流

我们已完成处理the_list[0]
接下来,看一下the_list[1]the_list[1]等于上一个值。
因此,不要将the_list[1]发送到输出流

只有当输入发生变化时,我们才会将输入发送到输出流

只要输入与2秒前相同,我们就不会向输出流发送输出

def foobar(the_list):
    # `prev` stands for the English word `previous`

    the_list = iter(the_list)
    prev = next(the_list)    
    yield prev
    for elem in the_list:
        if elem != prev:
            yield elem
        prev = elem

相关问题 更多 >