尝试在循环中使用枚举删除函数

Trying remove function with enumerate in loops

我目前正在学习python,我最近知道有一个函数叫做enumerate,所以我试图通过找出另一种解决方法来让自己更好地理解这个问题来自 Coursera。发生的事情是我在复制原始列表 后尝试使用 remove 函数修改列表,因此 for 循环 不会混淆(它迭代原始的,但我修改了重复列表)。谁能知道我的代码有什么问题?感谢之前的帮助。

def skip_elements(elements):
    # code goes here
    #new_elements=[]
    dup = elements
    for count, val in enumerate(elements):
        #if count % 2 == 0:
        #   new_elements.append(val)
        if count % 2 == 1:
            dup.remove(val)
    #return new_elements
    return dup

print(skip_elements(["a", "b", "c", "d", "e", "f", "g"])) 
# Should be ['a', 'c', 'e', 'g']
print(skip_elements(['Orange', 'Pineapple', 'Strawberry', 'Kiwi', 'Peach'])) 
# Should be ['Orange', 'Strawberry', 'Peach']

You have not duplicated the list. You just created a new reference to the same list. Use elements[:] to create a shallow copy. -@KlausD

dup = elements.copy(). Read more about what @KlausD. mentioned about it being reference Facts and myths about Python names and values – Ch3steR

略读Ch3steR先生的reference,基本上这部分代码dup = elements没有复制或复制原始列表,而只是引用了相同的列表,这就是为什么如果我编辑(删除)相同的列表,它会变得混乱。解决方案是使用 elements[:]dup = elements.copy().

非常感谢 @KlausD and @Ch3steR 的评论。