gpt4 book ai didi

python - 更改范围之外的列表

转载 作者:行者123 更新时间:2023-11-30 22:01:50 25 4
gpt4 key购买 nike

我正在尝试从列表中删除一个项目,如下所示:

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

有人知道问题出在哪里吗?

最佳答案

一个可能的修复。

将待办事项列表(字典列表)作为参数传递,因此它会发生变化:

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}]

这是因为 list(filter(lambda todoItem:todoItem['ID']!= ID, TodoList)) 行不会改变列表,它会根据条件提取元素。

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

关于python - 更改范围之外的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53924757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com