![](/img/trans.png)
[英]Modifying the first element of each tuple in a list of list by getting a dictionary value
[英]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.