Ich bin neu in Python und Linux und Programmierung im Allgemeinen, tut mir leid für Noob-Fragen.Entfernen von Elementen aus der Liste (for-Schleife), aber bekommt einen Indexfehler wenn nicht genannt list.copy()
ich eine Liste der CIFS-Aktien haben, wie unten,
['Type', 'Sharename', 'Comment']
[['Disk', '3tb', ''], ['Disk', 'c$', 'Default share']]
Ich möchte alle Anteile entfernen, die unter einen Kommentar gleichen wie in der Liste haben,
['Remote Admin', 'Default share', 'Remote IPC']
Ich schrieb die unter Stück Code, der ziemlich gut funktioniert, aber ich muss list = list.copy()
anrufen. Es scheint, ich verpasse hier etwas. Ist das der richtige Weg, oder gibt es einen besseren Weg für das gleiche und es entzieht sich mir?
for skip in self.skip_shares_disc:
# print("Skip: " + skip)
for share in all_shares:
all_shares = all_shares.copy()
# print(" share[2]: " + share[2] + "drive: " + share[1])
if str(share[2]).upper() == str(skip).upper():
all_shares = all_shares.copy()
# print(" share[2]: " + share[2] + "drive: " + share[1])
all_shares.remove(share)
all_shares = all_shares.copy()
Sie müssen die Kopie vor der 'for'-Schleife erstellen und die Kopie iterieren. In der for-Schleife müssen Sie Elemente aus der ursprünglichen Liste entfernen. – Frodon
Im Allgemeinen sollten Sie nichts ändern, über das Sie gerade iterieren. Iterieren Sie stattdessen die Liste, erstellen Sie eine Liste der zu entfernenden Bezeichner und durchlaufen Sie dann die Liste * this *, indem Sie Elemente aus der Liste "all_shares" entfernen. – jedwards
Mögliches Duplikat von [Elemente aus einer Liste entfernen, während in Python iteriert wird] (http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python) –