Hi, You can use method name count in list also for getting the repeats.
#!/usr/bin/python li=[1,2,3,1,4,5,7,3,4,1] for i in range(len(li)): print li[i], li.count(li[i]) cheers, Saurabh --- On Fri, 11/6/10, tutor-requ...@python.org <tutor-requ...@python.org> wrote: From: tutor-requ...@python.org <tutor-requ...@python.org> Subject: Tutor Digest, Vol 76, Issue 31 To: tutor@python.org Date: Friday, 11 June, 2010, 8:19 PM Send Tutor mailing list submissions to tutor@python.org To subscribe or unsubscribe via the World Wide Web, visit http://mail.python.org/mailman/listinfo/tutor or, via email, send a message with subject or body 'help' to tutor-requ...@python.org You can reach the person managing the list at tutor-ow...@python.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Tutor digest..." Today's Topics: 1. Looking for duplicates within a list (Ken G.) 2. Re: Looking for duplicates within a list (Alex Hall) 3. Re: Looking for duplicates within a list (Ken G.) 4. Re: Looking for duplicates within a list (Ken G.) 5. Re: Looking for duplicates within a list (Sander Sweers) 6. Re: Looking for duplicates within a list (Jose Amoreira) ---------------------------------------------------------------------- Message: 1 Date: Fri, 11 Jun 2010 09:57:34 -0400 From: "Ken G." <beach...@insightbb.com> To: tutor@python.org Subject: [Tutor] Looking for duplicates within a list Message-ID: <4c1240ce.7050...@insightbb.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed 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 ------------------------------ Message: 2 Date: Fri, 11 Jun 2010 10:20:20 -0400 From: Alex Hall <mehg...@gmail.com> To: "Ken G." <beach...@insightbb.com> Cc: tutor@python.org Subject: Re: [Tutor] Looking for duplicates within a list Message-ID: <aanlktilr4czmic1tsamutuzo8c32so-qkdxe9spco...@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 On 6/11/10, Ken G. <beach...@insightbb.com> 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. FYI, Python's "set" data type will let you have a list and never have a repeat. I know that is not your goal now, but if you want to remove duplicates, it seems like a good choice. > > 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]? A couple points here. First, you will want to make life easier by saying range(0, len(a)) so that the loop will work no matter the size of a. Second, for comparing a list to itself, here is a rather inefficient, though simple, way: for i in range(0, len(a)): x=a[i] for j in range(0, len(a)): y=a[j] if(x==y and i!=j): #match since a[i]==a[j] and i and j are not the same index of a > > 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. Do not quote me here, but I think sets may be able to tell you that as well. > > TIA, > > Ken > > > > > > > > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor > -- Have a great day, Alex (msg sent from GMail website) mehg...@gmail.com; http://www.facebook.com/mehgcap ------------------------------ Message: 3 Date: Fri, 11 Jun 2010 10:31:58 -0400 From: "Ken G." <beach...@insightbb.com> To: vnbang2...@yahoo.com, tutor@python.org Subject: Re: [Tutor] Looking for duplicates within a list Message-ID: <4c1248de.6090...@insightbb.com> Content-Type: text/plain; charset="iso-8859-1"; Format="flowed" vijay wrote: > Check out this code > l= [1, 2, 3, 3, 4] > d={} > for item in l: > d.setdefaut(item,0) > d[item] +=1 > print d > {1: 1, 2: 1, 3: 2, 4: 1} > > > with regard's > vijay > > Thanks. Very interesting concept. Ken -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/tutor/attachments/20100611/12e042f9/attachment-0001.html> ------------------------------ Message: 4 Date: Fri, 11 Jun 2010 10:40:58 -0400 From: "Ken G." <beach...@insightbb.com> To: Alex Hall <mehg...@gmail.com> Cc: tutor@python.org Subject: Re: [Tutor] Looking for duplicates within a list Message-ID: <4c124afa.7030...@insightbb.com> Content-Type: text/plain; charset="iso-8859-1"; Format="flowed" Alex Hall wrote: > On 6/11/10, Ken G. <beach...@insightbb.com> 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. >> > FYI, Python's "set" data type will let you have a list and never have > a repeat. I know that is not your goal now, but if you want to remove > duplicates, it seems like a good choice. > >> 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]? >> > A couple points here. First, you will want to make life easier by > saying range(0, len(a)) so that the loop will work no matter the size > of a. > Second, for comparing a list to itself, here is a rather inefficient, > though simple, way: > > for i in range(0, len(a)): > x=a[i] > for j in range(0, len(a)): > y=a[j] > if(x==y and i!=j): #match since a[i]==a[j] and i and j are not the > same index of a > >> 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. >> > Do not quote me here, but I think sets may be able to tell you that as well. > >> TIA, >> >> Ken >> Thank you for your contribution. As seen here, I have much to learn. Ken -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/tutor/attachments/20100611/eacd401a/attachment-0001.html> ------------------------------ Message: 5 Date: Fri, 11 Jun 2010 16:46:25 +0200 From: Sander Sweers <sander.swe...@gmail.com> To: "Ken G." <beach...@insightbb.com> Cc: tutor@python.org Subject: Re: [Tutor] Looking for duplicates within a list Message-ID: <aanlktikgt6zifb0gocsor5vnvxg2mtfdawjjr5rhb...@mail.gmail.com> Content-Type: text/plain; charset=UTF-8 On 11 June 2010 15:57, Ken G. <beach...@insightbb.com> wrote: > 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. If you do not have top keep the order of the number this will work. >>> a = [1, 2, 3, 3, 4] >>> counted = {} >>> for n in a: if not n in counted: counted[n] = 1 else: counted[n] += 1 >>> counted {1: 1, 2: 1, 3: 2, 4: 1} >>> for x, y in counted.items(): if y > 1: print "Number %s was found %s times" % (x, y) else: print "Number %s was found %s time" % (x, y) Number 1 was found 1 time Number 2 was found 1 time Number 3 was found 2 times Number 4 was found 1 time Greets Sander ------------------------------ Message: 6 Date: Fri, 11 Jun 2010 15:49:22 +0100 From: Jose Amoreira <ljmamore...@gmail.com> To: tutor@python.org Subject: Re: [Tutor] Looking for duplicates within a list Message-ID: <201006111549.22751.ljmamore...@gmail.com> Content-Type: Text/Plain; charset="iso-8859-1" On Friday, June 11, 2010 02:57:34 pm 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, > I would do it with a dictionary: def reps(lst): dict = {} for item in lst: if item in dict: dict[item] += 1 else: dict[item] = 1 return dict This function returns a dictionary with of the number of times each value in the list is repeated. Even shorter using dict.setdefault: def reps(lst): dict={} for item in lst: dict[item] = dict.setdefault(item,0) + 1 return dict For instance, if lst=[1,2,2,2,4,4,5], then reps(lst) returns {1: 1, 2: 3, 4: 2, 5: 1} Using the fact that the list is ordered, one can design a more efficient solution (go through the list; if this item is equal to the previous, then it is repeated, else, it is a new value). But you list is short enough for this direct approach to work. Hope this helps. Cheers, Jose ------------------------------ _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor End of Tutor Digest, Vol 76, Issue 31 *************************************
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor