【问题标题】:Remove all same characters in list删除列表中所有相同的字符
【发布时间】:2020-12-11 02:49:09
【问题描述】:

我想知道如何删除下面这个列表中的所有重复字符(不使用 set())。我尝试在列表中使用remove(),但它只能删除第一次出现的值。

例如:输入 = [23,42,65,73,5,2,73,51] 输出 = [23,42,65,5,2,51]

def number_repeated(lst):
    index = int(input('Remove index : '))
    a = 0
    for num in lst:
        if num == index:
            a += 1
    print('The number of digits are repeated: {}'.format(a))
    list(set(lst)).remove(index)
    return lst

print(number_repeated([23, 42, 65, 73, 5, 2, 73, 51]))

输出:

[65, 2, 5, 42, 51, 23]

另外,为什么在上面这段代码中,当我使用set() 时,输出没有排序?

【问题讨论】:

  • 集合没有(必然)排序。
  • 集合是无序的数据结构。如果要排序,请使用sorted(set()) 函数。
  • 没有产生那个输出。

标签: python sorting set


【解决方案1】:

您可以使用collections.Counter() 删除所有重复项:

例子:

from collections import Counter

originalList = [23,42,65,73,5,2,73,51]

filteredList = [k for k, v in Counter(originalList).items() if v == 1]

print(filteredList)

【讨论】:

  • 谢谢你的回答,但我想定义一个不使用模块的函数:)))
【解决方案2】:

试试这个

def myFunc(lst):    
    list2 = []

    for x in lst:
        if not x in list2:
            list2.append(x)

    list2 = sorted(list2)
    return list2

print(myFunc([23,42,65,73,5,2,73,51]))

输出:

[2, 5, 23, 42, 51, 65, 73]

【讨论】:

  • 我修复了那个错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 2022-07-05
  • 2017-11-07
  • 2014-09-14
  • 1970-01-01
  • 2019-04-30
相关资源
最近更新 更多