我是一个新的程序员,用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)
答案 0 :(得分:4)
您的功能只能return
一次,因此您需要将其退出for
循环。如上所述,您的函数在第一次迭代后当前将return 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]
答案 1 :(得分:0)
你可以通过列表理解轻松完成。
n = [3, 5, 7]
def double_list(x):
return [y*2 for y in x]
print double_list(n)
'[6, 10, 14]'
答案 2 :(得分:0)
这是使用map
:
>>> n = [3, 5, 7]
>>> def double_list(x):
return x * 2
>>> map(double_list, n)
[6, 10, 14]
>>>
答案 3 :(得分:0)
使用地图可以简单地说:
n = map(lambda x: 2*x, n)
答案 4 :(得分:-1)
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
更改为x
即可通过此练习
答案 5 :(得分:-1)
你可以这样做:
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)