Python - 迭代列表

时间:2017-09-26 22:56:17

标签: python python-3.x loops for-loop iterated-function

我想要我的代码的第二个功能来修改我的第一个功能所做的新列表。

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

答案 0 :(得分: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中删除。

答案 1 :(得分: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)

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

答案 2 :(得分:0)

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

答案 3 :(得分: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)

当你迭代它时不要更改列表,这可能会导致错误。