我试图找出如何在不使用返回的情况下获取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()
答案 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])