2017-06-24 1 views
1

Für z.Wie entfernen Sie in Python zusätzliche Leerzeichen aus einem zweidimensionalen Array?

list = [['2', '2', '', ''], ['3', '3', '', ''], ['4', '4', '', '']] 

und ich möchte als

newlist = [['2','2'],['3','3'],['4','4']] 

gibt es eine Liste umfassende kompakte Art und Weise dieses wie für 1D-Array zu erreichen haben wir [x for x in strings if x] ist es etwas ähnlich.

+0

So etwas wie '[Liste (s für s in List_Of_Strings wenn s) für List_Of_Strings in list_of_lists_of_strings]'? – user2864740

Antwort

3

Ich denke, du meinst, du möchtest leere Elemente aus deinem 2Darray entfernen. Wenn das der Fall ist, dann:

old_list = [['2', '2', '', ''], ['3', '3', '', ''], ['4', '4', '', '']] 
new_list = [[instance for instance in sublist if len(instance)>0] for sublist in old_list] 

Wenn Sie Elemente, die nur Leerzeichen (Leerzeichen usw.) zu entfernen, dann yoy kann, wie etwas tun:

old_list = [['2', '2', '', ''], ['3', '3', '', ''], ['4', '4', '', '']] 
new_list = [[instance for instance in sublist if not instance.isspace()] for sublist in old_list] 

hoffe, das hilft!

+0

ja, tut es! Danke für die perfekte Antwort! (Y) –

2

list = [[x for x in y if x != ''] for y in list]

+0

Willkommen bei SO. Wenn Sie Antworten veröffentlichen, erklären Sie bitte auch, was Sie geschrieben haben. Code-only-Antworten sind nicht die besten und können als minderwertige Antwort gekennzeichnet werden. – Syfer

+0

@Syfer Oh, ich dachte, es wäre selbsterklärend, aber danke für die Köpfe hoch! – cheekybanana

1

Sie können diese filter mit erreichen. Auch nicht verwandt, aber seit list ist ein reserviertes Wort ist es am besten, es nicht zu verwenden und versuchen, mit einem aussagekräftigeren Namen zu kommen, ich habe es einfach in original_list umbenannt, da die list() Methode sonst nicht funktioniert.

original_list = [['2', '2', '', ''], ['3', '3', '', ''], ['4', '4', '', '']] 
new_list = [] 
for sub_list in original_list: 
    new_sub_list = list(filter(None, sub_list)) 
    new_list.append(new_sub_list) 

print(new_list) 

Oder kurz

new_list2 = [ list(filter(None, sub_list)) for sub_list in original_list ] 
print(new_list2) 
0

Verwendung dieser Liste Verständnis:

list = [[x for x in a if x] for a in list] 
Verwandte Themen