Python 修改函数列表中的每个元素
我是一名通过Codeacademy学习python的新程序员,我应该创建一个函数double_list,返回列表n中的项目,并将每个数字乘以2。每次运行代码时都会出现错误:“double_list([0,1])返回[0,1],而不是[0,2]”Python 修改函数列表中的每个元素,python,function,Python,Function,我是一名通过Codeacademy学习python的新程序员,我应该创建一个函数double_list,返回列表n中的项目,并将每个数字乘以2。每次运行代码时都会出现错误:“double_list([0,1])返回[0,1],而不是[0,2]” n = [3, 5, 7] def double_list(x): for i in range(0, len(x)): x[i] = x[i] * 2 return x print double_list(n) 您的函数只能返
n = [3, 5, 7]
def double_list(x):
for i in range(0, len(x)):
x[i] = x[i] * 2
return x
print double_list(n)
您的函数只能
返回
一次,因此需要将其从for
循环中退出。如前所述,在第一次迭代后,函数当前将返回x
,因此不会修改其余元素
def double_list(x):
for i in range(0, len(x)):
x[i] = x[i] * 2
return x
顺便提一下,另一种方法是使用简单的列表理解,这将不修改原始列表,并将创建一个新列表,如果愿意,您可以将其分配回原始变量
def double_list(x):
return [i*2 for i in x]
>>> n = [3, 5, 7]
>>> n = double_list(n)
>>> n
[6, 10, 14]
如果希望修改实际列表参数,可以使用将函数更改为
def double_list(x):
for index, value in enumerate(x):
x[index] = 2 * value
>>> n = [3, 5, 7]
>>> double_list(n)
>>> n
[6, 10, 14]
你可以很容易地理解列表
n = [3, 5, 7]
def double_list(x):
return [y*2 for y in x]
print double_list(n)
'[6, 10, 14]'
使用
map
,这是一种简单的方法:
>>> n = [3, 5, 7]
>>> def double_list(x):
return x * 2
>>> map(double_list, n)
[6, 10, 14]
>>>
您只需将上行中的n
更改为x
,即可完成此练习使用地图即可:
n = map(lambda x: 2*x, n)
您可以简单地执行以下操作:
n = [3, 5, 7]
def double_list(x):
for i in range(0, len(x)):
x[i] = x[i] * 2
for j in range(1, len(x)):
x[j] = x[j] * 2
for k in range(2, len(x)):
x[k] = x[k] * 2
return x
# Don't forget to return your new list!
print double_list(n)
只需在“返回”前缩进一个缩进即可。您当前在循环中返回您的值,以便只乘以第一项。CoryKramer在我之前回答,您应该接受他的回答。祝你好运:)我还强烈建议使用列表理解,而不是原地修改列表,但是如果你打算原地修改列表,根本不需要
返回(多少list.sort()
返回None
——这只是原地修改)@AdamSmith更清楚地说明这一点,我编辑了我的帖子来展示每种方法。
n = [3, 5, 7]
def double_list(x):
for i in range(0, len(x)):
x[i] = x[i] * 2
for j in range(1, len(x)):
x[j] = x[j] * 2
for k in range(2, len(x)):
x[k] = x[k] * 2
return x
# Don't forget to return your new list!
print double_list(n)