Python-迭代列表



我希望我的代码的第二个功能来修改我的第一个函数的新列表。

如果我正确理解事物作为参数,将提供原始列表(在这种情况下为my_list)。

因此,代码删除了1&5,然后添加6,但不是7?

my_list = [1, 2, 3, 4, 5]
def add_item_to_list(ordered_list):
    # Appends new item to end of list which is the (last item + 1)
    ordered_list.append(my_list[-1] + 1)
def remove_items_from_list(ordered_list, items_to_remove):
    # Removes all values, found in items_to_remove list, from my_list
    for items_to_remove in ordered_list:
        ordered_list.remove(items_to_remove)
if __name__ == '__main__':
    print(my_list)
    add_item_to_list(my_list)
    add_item_to_list(my_list)
    add_item_to_list(my_list)
    print(my_list)
    remove_items_from_list(my_list, [1,5,6])
    print(my_list)

输出

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6, 7, 8]
[2, 4, 6, 8]

而不是想要的

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6, 7, 8]
[2, 3, 4, 7, 8]     

谢谢您,对不起,基本问题

在您的remove_items_from_list函数中,您正在通过错误的列表进行迭代。您应该遍历items_to_remove列表中的每个项目:

def remove_items_from_list(ordered_list, items_to_remove):
# Removes all values, found in items_to_remove list, from my_list
    for item in items_to_remove:
        ordered_list.remove(item) 

现在将通过删除列表中的每个项目迭代并将其从您的ordered_list中删除。

remove_items_from_list函数中有一个错误。为了实现您想要的东西:

def remove_items_from_list(ordered_list, items_to_remove):
# Removes all values, found in items_to_remove list, from my_list
    for item in items_to_remove:
        ordered_list.remove(item)

作为旁注,您的代码在函数定义之前的空白行数不正确。该功能之前应为两个空白行,而功能中的空白行不超过一个空白行。它似乎现在没有影响该代码,而是使阅读更加困难,并且可能会在以后引起问题。

在第二个功能中,您要通过items_to_remove(而不是您的原始列表)进行迭代,然后删除每个项目。

使用:

def remove_items_from_list(ordered_list, items_to_remove):
    for item_to_remove in items_to_remove:
        ordered_list.remove(item_to_remove)

并且在您迭代时不要更改列表,这可能会导致错误。

相关内容

  • 没有找到相关文章

最新更新