首页 > 解决方案 > 无法从列表中永久删除项目

问题描述

作为更广泛课程的一部分,我试图在调用时根据它们的名称删除列表中的项目。

目前我有一个如下代码:

users = [["Engineer", "Joe Blogs"], ["Scientist", "John Doe"]]
# many line of code later

def deleteName(name):

    for items in users:
        for values in items:
            if name in items:

                job = items[0]
                firstLastName = items[1]

                items.remove(job)
                items.remove(firstLastName)

                print(users)

此时print(users),一切都按预期工作。但是,一旦我尝试归还已更改的列表,我就会再次获得未更改的列表。我知道这是关于范围的,但我不知道如何解决它。

users正在被其他代码使用。

标签: python

解决方案


这行得通。作为注释,我建议您不要在函数中使用全局变量(用户),如果需要,只需将它们作为参数传递。

users = [["Engineer", "Joe Blogs"], ["Scientist", "John Doe"]]
# many line of code later


def deleteName(name, users):

    for items in users:

        _, firstLastName = items
        if firstLastName == name:

            users.remove(items)


deleteName("Joe Blogs", users)
print(users)

推荐阅读