0

我希望我的代码的第二个函数修改我的第一个函数创建的新列表。

如果我正确理解事物,将列表作为参数给出将给出原始列表(在这种情况下为 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]     

谢谢你,很抱歉这个基本问题

4

4 回答 4

1

在您的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

于 2017-09-26T23:04:44.867 回答
0

利用:

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

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

于 2017-09-26T23:16:56.253 回答
0

函数中存在错误 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)

作为旁注,您的代码在函数定义之前的空行数不正确。函数前应该有两个空行,函数内部不超过一个空行。它目前似乎没有影响代码,但使它更难阅读,并且将来可能会导致问题。

于 2017-09-26T23:05:50.457 回答
0

在第二个函数中,您要遍历 items_to_remove (而不是您的原始列表),然后删除每个项目。

于 2017-09-26T23:08:51.523 回答