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

时间:2015-07-17 15:18:03

标签: 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)

6 个答案:

答案 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)