簡體   English   中英

修改函數列表中的每個元素

[英]Modifying each element in a list in a 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)

您的函數只能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]

如果您希望修改實際的列表參數 ,則可以使用change函數將

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 = 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
    return x

print double_list(n)

您只需要在上一行中將n更改為x ,即可完成本練習

您可以簡單地做到這一點:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM