Python Forum

Full Version: how to use *args
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi, I got some lists, i would like to "bring together" 2 , 3 ,or 4 lists and make only one list from them ,i have to use *args(its an exo)

Here is my code:

list1 = [1,2]
list2 = [1,3,5,7,9]
list3 = [1,2,3,4]
list4 = [7,2,4]

def mergelist(*args):
[fill?]
 


print mergelist(list2, list2)
# >>> [1,3,5,7,9,1,3,5,7,9]

print mergelist(list2, list3, list4)
# # >>> [1,3,5,7,9,1,2,3,4,7,2,4]
#
print mergelist(l1)
# # >>> [1,2]
after " # ", are expected outputs
any help ?
def mergelist(*args):
    result = []
    for arg in args:
        result.extend(arg)
    return result
def mergelist2(*args):
    return [item for arg in args for item in arg]
Hello Buran, thanks for helping.

with:

def mergelist(*args):
    result = []
    for arg in args:
        result.extend(arg)
    return result
my output is :

Output:
[[1, 3, 5, 7, 9], [1, 3, 5, 7, 9]] [[1, 3, 5, 7, 9], [1,2,3,4], [7,2,4]] [[1,2]]
but I would like it to be :

Output:
[1,3,5,7,9,1,3,5,7,9] [1,3,5,7,9,1,2,3,4,7,2,4] [1,2]
well this looks like append, not extend... please, check your code
here is my code:



list1 = [1,2]
list2 = [1,3,5,7,9]
list3 = [1,2,3,4]
list4 = [7,2,4]
 
def mergelist(*args):
    r = []
    for arg in args:
        r.extend(arg)
        return r


  
 
 
print mergelist(list2, list2)
# >>> [1,3,5,7,9,1,3,5,7,9]
 
print mergelist(list2, list3, list4)
# # >>> [1,3,5,7,9,1,2,3,4,7,2,4]
#
print mergelist(l1)
# # >>> [1,2]
This code does not much the output from your previous post. note that return r is one more level indented than in my snippet.

 
def mergelist(*args):
    result = []
    for arg in args:
        result.extend(arg)
        return result
    
    
list1 = [1,2]
list2 = [1,3,5,7,9]
list3 = [1,2,3,4]
list4 = [7,2,4]

print mergelist(list2, list2)
# [1,3,5,7,9,1,3,5,7,9]
print mergelist(list2, list3, list4)
#[1,3,5,7,9,1,2,3,4,7,2,4]
print mergelist(list1)
Output:
mergelist [1, 3, 5, 7, 9] [1, 3, 5, 7, 9] [1, 2]
My code
def mergelist(*args):
    result = []
    for arg in args:
        result.extend(arg)
    return result    
    
list1 = [1,2]
list2 = [1,3,5,7,9]
list3 = [1,2,3,4]
list4 = [7,2,4]

print mergelist(list2, list2)
# [1,3,5,7,9,1,3,5,7,9]
print mergelist(list2, list3, list4)
#[1,3,5,7,9,1,2,3,4,7,2,4]
print mergelist(list1)
Output:
mergelist [1, 3, 5, 7, 9, 1, 3, 5, 7, 9] [1, 3, 5, 7, 9, 1, 2, 3, 4, 7, 2, 4] [1, 2]

And with append

 
def mergelist(*args):
    result = []
    for arg in args:
        result.append(arg)
    return result
   
list1 = [1,2]
list2 = [1,3,5,7,9]
list3 = [1,2,3,4]
list4 = [7,2,4]

print mergelist(list2, list2)
# [1,3,5,7,9,1,3,5,7,9]
print mergelist(list2, list3, list4)
#[1,3,5,7,9,1,2,3,4,7,2,4]
print mergelist(list1)
Output:
mergelist [[1, 3, 5, 7, 9], [1, 3, 5, 7, 9]] [[1, 3, 5, 7, 9], [1, 2, 3, 4], [7, 2, 4]] [[1, 2]] >>>
Did you insert buran's code correctly? When I add his solution to your code (correcting line 17 to read list1 instead of l1):

list1 = [1, 2]
list2 = [1, 3, 5, 7, 9]
list3 = [1, 2, 3, 4]
list4 = [7, 2, 4]


def mergelist(*args):
    result = []
    for arg in args:
        result.extend(arg)
    return result


print(mergelist(list2, list2))
# >>> [1,3,5,7,9,1,3,5,7,9]
print(mergelist(list2, list3, list4))
# >>> [1,3,5,7,9,1,2,3,4,7,2,4]
print(mergelist(list1))
# >>> [1,2]
I get:

Output:
[1, 3, 5, 7, 9, 1, 3, 5, 7, 9] [1, 3, 5, 7, 9, 1, 2, 3, 4, 7, 2, 4] [1, 2]
fixed, thanks !