#write a function that creates a new random list of integers #of specific size and integers in specific range #we will write several solutions to demostrate differents way to solve it #we will write main to test it #write a function make_even_odd that has one parameter - list of integers #function returns TWO new lists: list of evens and list of odds import random #version 1 def make_random_list(size, min_limit, max_limit): my_list=[] for i in range(size): #i=0,1,2,....size-1 my_list.append(random.randint(min_limit, max_limit)) return my_list #version 2 List comprehensions - shortcut to create a list def make_random_list1(size, min_limit, max_limit): return [random.randint(min_limit, max_limit) for i in range(size)] #version 1 for even/odd def make_even_odd(my_list): odd=[] even=[] for i in range(len(my_list)): #i=0,1,2,3....size-1 #i-is an INDEX if(my_list[i]%2==0): even.append(my_list[i]) else: odd.append(my_list[i]) return even, odd """ WRONG SOLUTION return even return odd """ #version 2 def make_even_odd1(my_list): odd=[] even=[] for i in my_list: #i - is a list element if(i%2==0): even.append(i) else: odd.append(i) return even, odd #version 3 - list comprehensions def make_even_odd2(my_list): even=[item for item in my_list if item%2==0] odd=[item for item in my_list if item%2!=0] return even,odd #write a function that CHANGES original list by replacing all evens with the #value def replace(my_list, value): for i in range(len(my_list)): if(my_list[i]%2==0): my_list[i]=value #IMPORTANT: to change original list we have to use for i in range(size) #using for item in my_list will not work #TRY THIS: def replace1(my_list, value): for item in my_list: if(item%2==0): item=value #make new list where all evens replaced with specific value def make_new(my_list, value): return [value if item%2==0 else item for item in my_list] #IMPORTANT! list comprehension approach cannot change original list def main(): list=make_random_list(10, -5,5) print(list) list1=make_random_list1(5,-100,100) print(list1) #call function that returns multiple items #version 1 even, odd=make_even_odd(list) print("evens",even) print("odds",odd) #version 2 result=make_even_odd1(list) print("evens and odds",result) #version 3 result=make_even_odd2(list) print("even", result[0]) print("odd",result[1]) #Part 2 creating new list/or replacing existing one #evens replaced with different number my_list=make_random_list(10,-5,5) print("original list",my_list) new_list=make_new(my_list, 100) print("original list", my_list) print("new list after replacement",new_list) #IMPORTANT! list comprehension approach cannot change original list replace(my_list, -1) print("original list", my_list) print("original list after replacement",my_list) #using for item in my_list and it doesn't work to change the list my_list=make_random_list(10,-10,10) replace1(my_list,-2) print("original list", my_list) print("original list after replacement",my_list) main()