RE: [python] porovnání listů
Krmela Tomas
krmela na asd-software.cz
Úterý Březen 22 12:49:02 CET 2005
Mam pocit, 6e mi tahle konstrukce spadne na runtime 2.2 ,který musím podporovat
-----Original Message-----
From: python-bounces na py.cz [mailto:python-bounces na py.cz] On Behalf Of Petr Prikryl
Sent: Tuesday, March 22, 2005 12:37 PM
To: Konference PyCZ
Subject: RE: [python] porovnání listů
Krmela Tomas napsal...
>
> Jen mne zajímalo zda není třeba nějaký
> operátor na tuto činnost.
Není. Ale můžete si definovat pro tento
účel funkci. Příklad:
a.py
=========================================
def listCmp(lst1, lst2):
"""Zjistuje shodnost seznamu."""
if len(lst1) != len(lst2):
return False
for i in xrange(len(lst1)):
if lst1[i] != lst2[i]:
return False
return True
a = [1, 2, 3]
b = [1, 2, 3]
c = a
d = []
e = [1, 2]
f = [1, 2, 4]
print listCmp(a, a)
print listCmp(a, b)
print listCmp(a, c)
print listCmp(a, d)
print listCmp(a, e)
print listCmp(a, f)
=========================================
Místo jinde zmiňovaného range() doporučuji
používat xrange() všude, kde je to možné.
Pokud bylo původním záměrem porovnání dvou
seznamů řetězců, pak možná lépe vyhoví
modul difflib:
b.py
=========================================
import difflib
def pr(gen):
"""Vytiskne sekvenci radku vracenych generatorem."""
for line in gen:
print line
print 'X' * 70
a = ['aa', 'ab', 'ac']
b = ['aa', 'ab', 'ac']
c = a
d = []
e = ['aa', 'ab']
f = ['aa', 'ab', 'ad']
print '=' * 70
F = difflib.context_diff
print 'Kontextove rozdily'
pr(F(a, a))
pr(F(a, b))
pr(F(a, c))
pr(F(a, d))
pr(F(a, e))
pr(F(a, f))
print '=' * 70
F = difflib.ndiff
print 'Delta rozdily'
pr(F(a, a))
pr(F(a, b))
pr(F(a, c))
pr(F(a, d))
pr(F(a, e))
pr(F(a, f))
print '=' * 70
F = difflib.unified_diff
print 'Delta rozdily v unifikovanem tvaru'
pr(F(a, a))
pr(F(a, b))
pr(F(a, c))
pr(F(a, d))
pr(F(a, e))
pr(F(a, f))
=========================================
Petr
_______________________________________________
Python mailing list
Python na py.cz
http://www.py.cz/mailman/listinfo/python
Další informace o konferenci Python