2016-04-21 9 views
0

Hier möchte ich Elemente in Liste der Liste nach Index entfernen. Eingang istPython: Entfernen Sie Elemente in der Liste der Liste nach Index

li = [[1,2,3,4],[5,6,7,8]] 

Gestellte Ausgang ist

[[1,3,4],[5,7,8]] 

Was ich versucht habe, ist,

print [x.pop(1) for x in li] 
+0

Nach '[x.pop (1) für x in li] 'li 'wird Ihre gewünschte Ausgabe haben. Sie müssen nur drucken "Print li". –

Antwort

1

Sie tatsächlich die Elemente in dem angegebenen Index entfernt, aber die falsche Liste ausgedruckt . Drucken Sie einfach li nachdem Sie die Einzelteile Pop:

>>> [x.pop(1) for x in li] 
>>> print li 

Allerdings müssen Sie wirklich Listenkomprehensionen verwenden? Da das Aufrufen von .pop() in einem Listenverständnis die entfernten Elemente ansammelt und eine neue, völlig nutzlose Liste mit ihnen erstellt.

Stattdessen können Sie nur die folgenden Möglichkeiten:

>>> for lst in li: 
... lst.pop(1) 
2

können Sie den del Operator wie folgt verwenden:

for sublist in list: 
    del sublist[1] 
0

pop, wie del die Liste zugrunde liegende Änderung so müssen Sie explizit Schleife durch die Unterlisten, um das zweite Element zu entfernen, und sie drucken die geänderte Liste.

for l in li: del l[1] 
print li 

Wenn auf der anderen Seite, Sie nicht wollen, um die Listen zu ändern, aber das Ergebnis direkt drucken, können Sie eine Liste Verständnis verwenden:

print [ (l[:1] + l[2:]) for l in li ] 
Verwandte Themen