【发布时间】:2016-12-02 23:13:35
【问题描述】:
假设我有一个列表
myList = [a,b,c,d,e]
还有一个函数
def doSomething(list):
#Does something to the list
我想像这样迭代地调用函数:
doSomething([b,c,d,e])
doSomething([a,c,d,e])
doSomething([a,b,d,e])
doSomething([a,b,c,e])
doSomething([a,b,c,d])
首先想到的是这样的:
for x in range(0,len(myList)):
del myList[x]
doSomething(myList)
但这并没有真正起作用,因为每次我调用 del 它实际上都会删除元素。每次调用该函数时,我都想“隐藏”该元素。有没有办法做到这一点?
【问题讨论】:
-
复制列表并从中删除?
-
@AndrasDeak 我认为这可能是一种方法,但是对于大型列表,我会像每次调用函数时一样复制列表,这不会花费大量时间吗?另外..如何再次复制列表?
-
好吧,对于大型列表,是的,它可能效率低下。复制简单(非嵌套)列表就像
cpy = myList[:]一样简单。您可以通过myList[:k]+myList[k+1:]忽略元素索引k关注极端情况;但这也会为您创建一个列表。 -
删除一个元素也很昂贵,所以副本不要太费劲......