我希望我的代码的第二个功能来修改我的第一个函数的新列表。
如果我正确理解事物作为参数,将提供原始列表(在这种情况下为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)
并且在您迭代时不要更改列表,这可能会导致错误。