通过该功能修改参数

时间:2017-03-09 05:48:26

标签: python

我试图找出如何在不使用返回的情况下获取square_each列表?

以下是具体内容:编写和测试函数square_each(nums),其中nums是(Python)数字列表。它通过平方每个条目并替换其原始值来修改列表nums。你必须修改参数,不允许返回!

def square_each(nums):
    for i in range(len(nums)):
        nums[i]= int(nums[i]) * int(nums[i])
    return nums

def sum_list(str_list):
    x = sum(str_list)
    return x

def to_numbers(str_list):
    for i in range(len(str_list)):
        str_list[i] = eval(str_list[i])
    return str_list

def main():
    file=open("numbers.txt").readline().split(" ")
    print(to_numbers(file))
    print(square_each(file))
    print(sum_list(file))

main()

3 个答案:

答案 0 :(得分:1)

您可以使用list comprehension并使用Python处理对象的方式。它是neither call by value, nor call by reference

def square_each(num_list):
    intermediate_list = [x**2 for x in num_list]
    num_list.clear()  # Removes all the elements of current list
    num_list.extend(intermediate_list)  # Adds processed elements to the original list

您需要在此修改列表。

请注意,它比使用global或任何其他此类内容更好,因为它可以防止引入因global关键字而引入的其他问题。

答案 1 :(得分:0)

您发布的函数square_each已满足您的条件:

def square_each(nums):
    for i in range(len(nums)):
        nums[i] = int(nums[i]) * int(nums[i])

l = [1, 2, 3]
square_each(l)
print(l)  # output: [1, 4, 9]

答案 2 :(得分:-1)

您必须在全局范围内声明nums

所以这样做

nums = [] # your array in global scope

def square_each():
    # Now you can use original nums
    global nums
    for i in range(len(nums)):
        nums[i]= int(nums[i]) * int(nums[i])