删除或更改列表中特定的重复元素(并非所有重复元素)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除或更改列表中特定的重复元素(并非所有重复元素)相关的知识,希望对你有一定的参考价值。

我正在尝试制作一些可以读取字符元素列表的内容,并告诉您确切每个元素重复多少次。我的想法是使用for循环并打印告诉我所需信息的语句来遍历列表。

这是我的第一个主意:

list = ["code", "this", "code"]

for i in range(len(list)):
    list.count(list[i])
    print(" is repeated ".format(list[i]) + str(list.count(list[i])) + " times")

当我运行此代码时,它打印出来:

代码重复2次

重复1次

代码重复2次

现在,实现我的目标的下一步是停止两次打印两次“代码重复”。这是我的麻烦开始。我一直在寻找从列表中删除特定重复项的方法,但我发现的是删除所有重复项的方法(我不希望这样做,因为那样会使代码经过列表的第一个元素后变得无用)。因此,我的问题如下:

一旦打印出重复声明,是否有可能从列表中删除特定的重复元素?这意味着,一旦打印出“代码重复2次”,列表将仅更改为[“ this”]。

是否可以更改特定重复元素的“值”?这意味着,一旦打印出“代码重复2次”,该列表就会更改为(例如)为[0,“ ​​this”,0],这样我可以使用if语句在元素为=时不打印任何内容= 0。

要清楚,我只想知道:

--如果可能的话:我该如何更改编码以实现该目标。

--如果不可能:我可能能够做些其他事情来实现自己的目标。

答案
set

或者,lst = ["code", "this", "code"] for elem in sorted(set(lst), key = lambda x:lst.index(x)): print(f"elem is repeated lst.count(elem) times")

dict.fromkeys

输出:

dict.fromkeys

您也可以查看for elem in dict.fromkeys(lst): print(f"elem is repeated lst.count(elem) times")

code is repeated 2 times
this is repeated 1 times

相同输出。

您所说的在某种意义上也是可能的,但是它看起来不是pythonic,我也不认为有必要,但是这里是代码。

注意:在迭代列表时修改列表是个坏主意。

collections.Counter()

输出相同。

以上是关于删除或更改列表中特定的重复元素(并非所有重复元素)的主要内容,如果未能解决你的问题,请参考以下文章

Python 3,如果列表中包含特定的东西,如何删除部分元素3 [重复]

如何从列表中删除一个特定元素[重复]

从列表中删除相邻的重复元素[重复]

如何从字典中的列表中删除元素[重复]

如何从 php 数组中删除具有特定值的所有元素? (以尽可能最短的方式)[重复]

删除列表中的元素,考虑重复的子元素