我想要我的代码的第二个功能来修改我的第一个功能所做的新列表。
如果我正确理解事情,给出一个列表作为参数将给出原始列表(在这种情况下为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]
谢谢并抱歉基本问题
答案 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)
当你迭代它时不要更改列表,这可能会导致错误。