這個問題在這里已經有了答案: 如何在for回圈期間修改串列條目? (9 個回答) 如何在迭代時從串列中洗掉專案? (25 個回答) 14 小時前關閉。
我需要撰寫一個函式,從串列中洗掉奇數并將剩余的偶數平方。
我試過這樣的事情:
def modify_list(l):
l1 = [i ** 2 for i in l if i % 2 == 0]
return l1
但它從我傳遞給函式的串列中創建了一個副本,而我需要修改傳遞的串列本身,因此會產生以下代碼:
id(l1) == id(l) # True
我也嘗試使用remove方法重寫代碼,但我無法弄清楚如何從傳遞的串列中對剩余元素進行平方,因此它會回傳相同的串列(而不是它的副本)
def modify_list(l):
for element in l:
if element % 2 != 0:
l.remove(element)
是否可以更改我的代碼以回傳我通過的相同串列物件,但沒有奇數和平方偶數?
uj5u.com熱心網友回復:
def modify_list(l):
li = [i**2 for i in l if i % 0 == 0]
for n,i in enumerate(li):
l[n] = i
return l
串列是可變的,因此直接賦值有效。'li' 是一個新串列,因此會有不同的 ID。
uj5u.com熱心網友回復:
使用這個方法
def modify_list(l):
l[:] = [i for i in l if i % 2 == 0]
return l
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/368266.html
