所以,我在处理一个list lt=[1,1,3,4,5,5]并且k =1的问题,所以,我尝试从列表中删除所有出现的k并返回列表,但是当我使用内置方法remove时()它只删除第一个出现,而忽略其他出现。**我收到的输出是[1,3,4,5,5],我期望的输出是[3,4,5,5]**下面是我的代码,谢谢。
class Solution(object):
def remove_occurances(self, lt, k):
i = 0
while i < len(sorted(lt)):
if lt[i] == k:
lt.remove(lt[i])
i += 1
return lt
if __name__ == "__main__":
p = [1, 1, 3, 4, 5, 5]
k = 1
print(Solution().remove_occurances(p, k))
4条答案
按热度按时间jtoj6r0c1#
在
remove_occurances
中,您可以改为:注意,这个函数直接作用于输入列表,所以
remove
调用会改变输入列表,并且返回的列表lt
和这个输入列表lt
是 * 相同的 * 列表(即指向同一个内存的指针,而不是一个副本)。如果你希望原始的输入列表保持不变,你需要做如下的事情:
这将在列表
lt
仍然包含值k
时继续循环。ar7v8xwq2#
你回来得太快了:
输出:
sc4hvdpw3#
您应该删除in loop。
不是从特定位置移除,而是移除特定值(只要该值存在于列表中)。
当没有更多的这个数组时-它将引发valueEttor,您将知道所有请求的值都已被删除。
编辑:测量时间:
3pvhb19x4#