这个不是return的事,是你的 if 和 del 中忘了写 list 的 索引
参考:
- def remove_repeats(events):
- for i in range(len(events) - 1, 0,-1):
- if events[i] == events[i-1]:
- del events[i]
-
- list1=[1,2,2,3]
- remove_repeats(list1)
- print(list1)
复制代码
----------
不用return 也能打印正确的结果,是因为:
传递list 类型的参数是 “ pass by reference”, 不是 “pass by value”.
就是 传递的是 原始的 list的地址, 在函数中的任何改变 都将反映在 调用它的 原始list
运行下面的程序,看看结果:
- def foo(onelist):
- onelist[2] = "hi"
-
- list1 = [1, 2, 3, 4]
- foo(list1)
- print(list1)
复制代码
结果是: [1, 2, 'hi', 4], 调用foo函数已经改变了 原来的 list1