gpt4 book ai didi

python - 搜索并从元组列表中删除

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

我有一个元组形式的待办事项列表...

[(datetime.datetime(2014, 2, 28, 0, 0), 'tutorial signons'), (datetime.datetime(2014, 4, 9, 0, 0), 'assignment 1'), (datetime.datetime(2014, 4, 22, 0, 0), 'assignment 2'), (datetime.datetime(2014, 6, 14, 0, 0), 'exam study'), (datetime.datetime(2014, 3, 15, 0, 0), 'buy groceries'), (datetime.datetime(2014, 3, 20, 0, 0), 'laundry'), (datetime.datetime(2014, 3, 26, 0, 0), 'maths assignment'), (datetime.datetime(2014, 3, 31, 0, 0), 'write todo list'), (datetime.datetime(2014, 4, 4, 0, 0), 'apply for a job'), (datetime.datetime(2014, 4, 14, 0, 0), 'procrastinate'), (datetime.datetime(2014, 4, 19, 0, 0), 'buy easter eggs'), (datetime.datetime(2014, 4, 25, 0, 0), 'buy anzac biscuits')]

我正在尝试编写一个函数,如果待办任务与名称匹配,它将从列表中删除一个元组,如果没有找到名称,它将返回 False。这是我到目前为止所拥有的,但即使任务存在,我总是得到错误。

def remove_item(todolist, name):
for t in todolist:
if t[1] is name:
del t
else:
return False

最佳答案

代码的问题在于您正在测试引用相等('is'运算符)而不是值相等('==' 运算符)。

例如

>>> a = 'tutorial signons'
>>> b = 'tutorial signons'

a is b 将返回 False,但 a == b 将返回 True

参见this了解更多详情。

因此,这应该符合您的预期:

  def remove_item(todo_list, name):
for t in todolist:
if t[1] == name:
del t
else:
return False

但是,从正在迭代的列表中删除元素并不是一个好主意。您可能想要创建一个新列表或使用类似以下内容的内容:

filtered_list = filter(lambda x: x[1] != 'some_string', todo_list)

这将从列表中删除与 some_sting 匹配的每个元组。

关于python - 搜索并从元组列表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22825790/

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