Python passing list into a function and return back to main -
i taking 3 values users. number1, number2 , power, considering number1 , number2 range of list. trying pass list of of numbers function parameter along power value parameter. using pow function calculate powers of each of numbers in list using loop. want store results in same list passed function , return main function , print there. question is, assume trying wrong approach since output not expected. declared list (results) , store power results numbers list it. asigned results list numbers list, copy values in it. when return numbers list , print in main function, still shows same values in numbers list before sent function. though when try print list inside function, gives correct output. how wrong, , how should correct it?
def powerlist(numbers, power): print("in function") print(numbers) print("calculating powers") result = [] x in range(len(numbers)): result.append(pow(numbers[x], power)) numbers = result return(numbers) def main(): n1 = int(input("input number1: ")) n2 = int(input("input number2: ")) power = int(input("input power: ")) numbers = [x x in range(n1,n2+1)] print(numbers) print("passed function powerlist") powerlist(numbers, power) print(numbers) main()
if want function mutate argument list, explicitly , (by convention) return none, e.g.:
def power_list(numbers, power): # note pep-8 naming style index, item in enumerate(numbers): numbers[index] = pow(item, power) # no explicit return equivalent 'return none' which replaces content of numbers 1 element @ time, or:
def power_list(numbers, power): numbers[:] = [pow(number, power) number in numbers] which uses list comprehension create new list, overwrites content of original new values. in use, either version:
>>> lst = range(5) >>> lst [0, 1, 2, 3, 4] >>> power_list(lst, 2) >>> lst [0, 1, 4, 9, 16]
Comments
Post a Comment