第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更改范圍外的列表

更改范圍外的列表

紅糖糍粑 2021-09-25 17:04:15
我正在嘗試從列表中刪除一個項目,如下所示:TodoList=[{'ID':5,'TodoItem':'walk','isDone':False}];def RemoveItem(ID):     if not any(todoItem['ID'] == ID for todoItem in TodoList):          return 'item does not exist';     RemovedList=list(filter(lambda todoItem:todoItem['ID']!= ID,TodoList))     TodoList=RemovedList不起作用,我也試過這個: def RemoveItem(ID):         nonlocal TodoList         if not any(todoItem['ID'] == ID for todoItem in TodoList):              return 'item does not exist';         TodoList=list(filter(lambda todoItem:todoItem['ID']!= ID,TodoList))有誰知道問題是什么?
查看完整描述

2 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

一種可能的解決方法。


將待辦事項列表(字典列表)作為參數傳遞,因此它會發(fā)生變化:


TodoList=[{'ID':5,'TodoItem':'walk','isDone':False}, {'ID':6,'TodoItem':'talk','isDone':True}]


def RemoveItem(ID, TodoList):

     if not any(todoItem['ID'] == ID for todoItem in TodoList):

          print('item does not exist');

     else:

      for item in TodoList:

        if item['ID']== ID: TodoList.remove(item)



RemoveItem(5, TodoList)


print(TodoList)

#=> [{'ID': 6, 'TodoItem': 'talk', 'isDone': True}]

要使您的解決方案起作用,您需要返回:

def RemoveItem(ID, TodoList):

     if not any(todoItem['ID'] == ID for todoItem in TodoList):

          return 'item does not exist';

     else:

      return list(filter(lambda todoItem:todoItem['ID']!= ID, TodoList))



print(RemoveItem(5, TodoList))

#=> [{'ID': 6, 'TodoItem': 'talk', 'isDone': True}]

這是因為該行l(wèi)ist(filter(lambda todoItem:todoItem['ID']!= ID, TodoList))不會改變列表,而是根據條件提取元素。


但是如果沒有要刪除的項目,最好返回列表本身,而不是返回字符串。


查看完整回答
反對 回復 2021-09-25
?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

一個可能的解決方案是找到帶有 id 的項目的索引并使用pop:


todo_list = [{'ID': 5, 'TodoItem': 'walk', 'isDone': False}]



def remove_item(ID):

    if not any(todoItem['ID'] == ID for todoItem in todo_list):

        return 'item does not exist'


    # get index of id

    idx = next(i for i, e in enumerate(todo_list) if e['ID'] == ID)


    # remove and return

    return todo_list.pop(idx)



print(remove_item(4))

print(remove_item(5))

print(todo_list)

輸出


item does not exist

{'isDone': False, 'ID': 5, 'TodoItem': 'walk'}

[]

您第一次嘗試的問題是,當您這樣做時:TodoList=RemovedList在函數內部,它會在函數內部創(chuàng)建一個新的局部變量,即使存在同名的全局變量。在您的第二次嘗試中,您需要設置為全局而不是非本地:


todo_list = [{'ID': 5, 'TodoItem': 'walk', 'isDone': False}]


def RemoveItem(ID):

    global todo_list

    if not any(todoItem['ID'] == ID for todoItem in todo_list):

        return 'item does not exist';


    todo_list = list(filter(lambda todoItem: todoItem['ID'] != ID, todo_list))



RemoveItem(5)

print(todo_list)

輸出


[]


查看完整回答
反對 回復 2021-09-25
  • 2 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號