Gordon Williams wrote:
I have to lists that I need to find the common numbers (2nd rounded to
nearest integral) and I am wondering if there is a more efficient way of
doing it.

a= [(123,1.3),(123,2.4),(123,7.8),(123,10.2)]
b= [(123, 0.9), (123, 1.9), (123, 8.0)]
[ (i,round(j)) for i,j in a for l,m in b if (i,round(j)) ==

(l,round(m))] [(123, 1.0), (123, 2.0), (123, 8.0)]

[snip]
Would the sets module be more efficient?

Well, in Python 2.3, I believe sets are implemented in Python while they're implemented in C in Python 2.4. So probably not, unless you upgrade. A 2.4 solution with sets:


>>> a = [(123,1.3),(123,2.4),(123,7.8),(123,10.2)]
>>> b = [(123, 0.9), (123, 1.9), (123, 8.0)]
>>> def roundedj(pairs_iterable):
...     return ((i, round(j)) for i, j in pairs_iterable)
...
>>> set(roundedj(a)).intersection(set(roundedj(b)))
set([(123, 8.0), (123, 2.0), (123, 1.0)])

Steve
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to