显示重复项和重复项的数量

2024-09-29 05:25:19 发布

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

我有下面的代码。它的工作,除非我有一个重复3次或更多的重复,程序是考虑作为一个新的数字元素,并显示它两次。如何解决这个问题

import collections
mylist = [1,2,3,4,5,5,6,7,7,7,8,9]
i = 0
count = 0


for i in range(len(mylist)):
    print1 = mylist.count(mylist[i])
    if print1 > 1:

        print("Duplicate Element: " , mylist[i])
        print("It is repeated " , print1, "times")
        mylist.remove(mylist[i])
        count += 1
        i += 1

我得到的结果是

Duplicate Element:  5
It is repeated  2 times
Duplicate Element:  7
It is repeated  3 times
Duplicate Element:  7
It is repeated  2 times
Traceback (most recent call last):
  File "C:/Users/sanantha/Documents/Python/Lab6/task3.py", line 10, in <module>
    print1 = mylist.count(mylist[i])
IndexError: list index out of range

如何解决这个问题


Tags: 代码in程序iscountrangeit数字
3条回答

使用collections.Counter,它是为此而构建的:

from collections import Counter

mylist = [1,2,3,4,5,5,6,7,7,7,8,9]
for value, repeats in Counter(mylist).items():
    if repeats > 1:
        print("Value {} repeats {} times".format(value, repeats)

你的代码需要一个补丁。最好的方法是使用^{}

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

for i in set(mylist):
    count = mylist.count(i)
    if count > 1:
        print('Duplicate Element: %i' % i)
        print('It is repeated  %i times' % count)

下面是另一种方法,使用itertools.groupby

from itertools import groupby

print(*["Duplicate element: {}. It is repeated {} times."
         .format(k, len(list(group))) for k, group in groupby(mylist)
         if len(list(group)) > 1],
         sep='\n')

输出:

Duplicate element: 5. It is repeated 2 times.
Duplicate element: 7. It is repeated 3 times.

相关问题 更多 >