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

Reply via email to