Angenommen, ich eine Liste habenWie "versteckt" man ein Element in einer Liste, wenn man die Liste an eine Funktion in Python übergibt?
myList = [a,b,c,d,e]
und eine Funktion
def doSomething(list):
#Does something to the list
Und ich möchte, wie dies die Funktion iterativ nennen:
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])
Das erste, was würde den Sinn kommt, sei etwas wie dieses:
for x in range(0,len(myList)):
del myList[x]
doSomething(myList)
Aber das funktioniert nicht wirklich, denn jedes Mal, wenn ich anrufe del löscht es tatsächlich das Element. Ich möchte das Element einfach jedes Mal "verstecken", wenn ich die Funktion aufruft. Gibt es eine Möglichkeit, dies zu tun?
Kopieren Sie die Liste, und löschen Sie daraus? –
@AndrasDeak Ich dachte, das könnte ein Weg sein, aber dann für große Listen Ich kopiere die Liste wie jedes Mal, wenn ich die Funktion anrufe, dauert das nicht viel Zeit? Wie kann ich Listen erneut kopieren? –
Nun, für große Listen, ja, könnte es ineffizient sein. Das Kopieren einfacher (nicht verschachtelter) Listen ist so einfach wie 'cpy = myList [:]'. Sie können den Element-Index "k" ignorieren, indem Sie "myList [: k] + myList [k + 1:]' auf Eckfälle achten; aber dies wird auch eine Liste für Sie erstellen. –