Python 修改函数列表中的每个元素

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) 您的函数只能返

我是一名通过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)

您的函数只能
返回
一次,因此需要将其从
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)