[Tutor] Looking for duplicates within a list

Dave Angel davea at ieee.org
Fri Jun 11 17:37:31 CEST 2010


Ken G. wrote:
> I have been working on this problem for several days and I am not 
> making any progress.  I have a group of 18 number, in ascending order, 
> within a list.  They ranged from 1 to 39.  Some numbers are duplicated 
> as much as three times or as few as none.
>
> I started with one list containing the numbers.  For example, they are 
> listed as like below:
>
> a = [1, 2, 3, 3, 4]
>
> I started off with using a loop:
>
>    for j in range (0, 5):
>    x = a[0] # for example, 1
>
> How would I compare '1' with 2, 3, 3, 4?
> Do I need another duplicated list such as b = a and compare a[0] with 
> either b[0], b[1], b[2], b[3], b[4]?
>
> Or do I compare a[0] with a[1], a[2], a[3], a[4]?
>
> In any event, if a number is listed more than once, I would like to 
> know how many times, such as 2 or 3 times.  For example, '3' is listed 
> twice within a list.
>
> TIA,
>
> Ken
>
I'm a bit surprised nobody has mentioned the obvious solution -- another 
list of size 40, each of which represents the number of times  a 
particular number has appeared.

(Untested)

 
a = [1, 2, 3, 3, 4]
counts = [0] * 40
for item in a:
     counts[item] += 1

Now, if you want to know how many times 3 appears, simply
   print counts[3]

The only downside to this is if the range of possible values is large, 
or non-numeric.  In either of those cases, go back to the default 
dictionary.

DaveA



More information about the Tutor mailing list