On Wednesday, October 2, 2013 10:04:16 AM UTC, subhaba...@gmail.com wrote: > Dear Group, > > > > I am trying to work out a solution to the following problem in Python. > > > > The Problem: > > Suppose I have three lists. > > Each list is having 10 elements in ascending order. > > I have to construct one list having 10 elements which are of the lowest value > among these 30 elements present in the three given lists. > > > > The Solution: > > > > I tried to address the issue in the following ways: > > > > a) I took three lists, like, > > list1=[1,2,3,4,5,6,7,8,9,10] > > list2=[0,1,2,3,4,5,6,7,8,9] > > list3=[-5,-4,-3,-2,-1,0,1,2,3,4] > > > > I tried to make sum and convert them as set to drop the repeating elements: > > set_sum=set(list1+list2+list3) > > set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, -5, -4, -3, -2]) > > > > In the next step I tried to convert it back to list as, > > list_set=list(set_sum) > > gave the value as, > > [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, -5, -4, -3, -2] > > > > Now, I imported heapq as, > > import heapq > > > > and took the result as, > > result=heapq.nsmallest(10,list_set) > > it gave as, > > [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4] > > > > b) I am thinking to work out another approach. > > I am taking the lists again as, > > > > list1=[1,2,3,4,5,6,7,8,9,10] > > list2=[0,1,2,3,4,5,6,7,8,9] > > list3=[-5,-4,-3,-2,-1,0,1,2,3,4] > > > > as they are in ascending order, I am trying to take first four/five elements > of each list,like, > > > > list1_4=list1[:4] > > >>> list2_4=list2[:4] > > >>> list3_4=list3[:4] > > > > Now, I am trying to add them as, > > > > list11=list1_4+list2_4+list3_4 > > > > thus, giving us the result > > > > [1, 2, 3, 4, 0, 1, 2, 3, -5, -4, -3, -2] > > > > Now, we are trying to sort the list of the set of the sum as, > > > > sort_sum=sorted(list(set(list11))) > > > > giving us the required result as, > > > > [-5, -4, -3, -2, 0, 1, 2, 3, 4] > > > > If by taking the value of each list portion as 4 gives as less number of > elements in final value, as we are making set to avoid repeating numbers, we > increase element count by one or two and if final result becomes more than 10 > we take first ten. > > > > Are these approaches fine. Or should we think some other way. > > > > If any learned member of the group can kindly let me know how to solve I > would be helpful enough. > > > > Thanking in Advance, > > Subhabrata.
PS: I'm learning python (or any programming language) for the first time so I'm pretty sure you don't have to take my word for it but this is what I've got: list1 = [1,2,3,4,5,6,7,8,9,10] list2 = [1,2,5,8,9,10,12,15,16,17] list3 = [-1,-2,-3,8,20,30,40,50,60,17] def smallestTen(a,b,c): ultimatelist = a + b + c for i in ultimatelist: return sorted(set(ultimatelist))[:10] print (smallestTen(list1, list2, list3)) -- https://mail.python.org/mailman/listinfo/python-list