Seite 1 von 1

2 Listenvergleichen

Verfasst: Dienstag 24. April 2007, 13:42
von mitch
Hi,

eine etwas simple Frage aber wie kann ich schnellst möglich 2 Listen in einem python script vergleichen?

Bsp.: Liste1=['hund','katze','maus']
Liste2=['hund','maus','igel']

so jetzt will ich in der dritten Liste das stehen haben...Liste3['hund','maus']...weil die beiden werte in der ersten sowie in der zweiten liste vorkommen...

Kann mir einer sagen wie ich das am elegantesten löse?

mfg mitch

Re: 2 Listenvergleichen

Verfasst: Dienstag 24. April 2007, 13:49
von gerold
mitch hat geschrieben:Liste3['hund','maus']
Hi mitch!

Code: Alles auswählen

>>> l1 = ['hund','katze','maus']
>>> l2 = ['hund','maus','igel']
>>> [ item for item in l1 if item in l2 ]
['hund', 'maus']
>>> 
Wahrscheinlich schneller, aber erst ab Python 2.4:

Code: Alles auswählen

>>> s1 = set(l1)
>>> s2 = set(l2)
>>> s1.intersection(s2)
set(['maus', 'hund'])
>>> 
mfg
Gerold
:-)

Verfasst: Dienstag 24. April 2007, 14:14
von mitch
Hi,

hm das Problem ist aber, dass es im Plone irgendwie nicht so einfach ist.
Da habe ich 2 Listen mit nummern stehen z.B. ret_list1=[22,44,45,46] und eine ret_list2=[22,33,45,47] und in ret_list3 soll das stehen ret_list3=[22,45].
Bisher habe ich das immer mit schleifen gemacht, also alle listen elemente immer miteinander verglichen und daher ist mein Quelltext verständlicherweise sehr lang geworden. Jetzt suche ich einen weg den Quelltext übersichtlicher zu gestalten und zu verkürzen.

Mein Python Script ist nur ein zwischen Formular zur Auswertung von den Listen, danach sollen die Listenwerte an das nächste Template weitergegeben werden.

mfg