2017-03-12 4 views
1

Anfängerfrage.Python: füge zwei geordnete Listen zusammen, ersetze Elemente bedingt

I zwei geordnete Listen mit dem gleichen Auftrag haben,

list_1=['de', 'de', 'de', '3'] 
list_2=['6', '5', '3', 'not'] 

so das n-te Element von list_1 entspricht dem n-ten Element von list_2.

Ich möchte die beiden Listen unter Beibehaltung ihrer Reihenfolge zusammenführen. Darüber hinaus sollte die Liste aus der Zusammenführung besteht vollständig aus Zahlen, d.h.

merged_list=['6', '5', '3', '3'] 

Vorzugsweise I nach Position in der Liste bedingt auf Zeichenkette oder Zahlenwerten verschmelzen. Ich habe das gleiche Problem mit anderen geordneten Listen, aber mit diesen Listen möchte ich numerische Werte durch Zeichenfolgenwerte ersetzen. I.a. meine Probleme mit allen geordnete Listen zu lösen ich mich möchte etwas tun:

replace element_n of list_i with element_n of list_j if element_n of list_i equals 'z' 

wobei z entweder ein numerischer Wert oder ein String-Wert, abhängig von der Art der Liste ist.

Antwort

0

Sie zip können zwei Listenelemente aggregiert:

>>> list_1 = ['de', 'de', 'de', '3'] 
>>> list_2 = ['6', '5', '3', 'not'] 
>>> zip(list_1, list_2) 
<zip object at 0x1029e53c8> 
>>> list(zip(list_1, list_2)) 
[('de', '6'), ('de', '5'), ('de', '3'), ('3', 'not')] 

und str.isdigit zu überprüfen, ob die gegebene Zeichenkette eine Zahl ist:

>>> '123'.isdigit() 
True 
>>> 'de'.isdigit() 
False 

Durch die Zusammenarbeit mit conditional expression und list comprehension kombinieren, werden Sie bekommen, was Sie wollen:

>>> [a if a.isdigit() else b for a, b in zip(list_1, list_2)] 
['6', '5', '3', '3'] 
+0

Vielen Dank für Ihre Hilfe. Vergib mir meine Unwissenheit, aber ist Python-Ausgabe, kein Befehl, oder? – LucSpan

+0

@LucSpan, Sie haben Recht. 'zip' gibt ein' zip-Objekt..' in Python 3 zurück. Es ist iterierbar, zeigt aber nicht den Inhalt an. Also setze ich 'list (zip (..)))' next line, um die Items anzuzeigen, die es einmal iteriert hat. – falsetru

+0

Großartig, danke! – LucSpan

Verwandte Themen