what does the following code mean?
 if item in list2:
                        if item + 1 in list1 and item + 1 in list2:


 
On 11/14/05, Brian van den Broek <[EMAIL PROTECTED]> wrote:
Ben Bush said unto the world upon 2005-11-14 05:51:
> I have four lists:
> lisA=[1,2,3,4,5,6,9]
> lisB=[1,6,5]
> lisC=[5,6,3]
> lisD=[11,14,12,15]
> how can I write a function to compare lisB, lisC and lisD with lisA, if they
> share two continuous elements (the order does not matter), then return 1,
> otherwise return 0. For example, lisA, lisB and lisC have 5,6 or 6,5 so
> these comparison will return 1 but the comparison between lisD and lisA
> return 0.
> --
> Thanks!
> Ben Bush

Hi Ben,

the code below is tested no further than shown. And, I'm no expert --
I imagine there are better ways. With luck, I'll learn them in a
follow-up from someone more skilled :-)

>>> def list_common_continuity_comp(list1, list2):
        for item in list1:
                if item in list2:
                        if item + 1 in list1 and item + 1 in list2:
                                return True
        return False

>>> lisA=[1,2,3,4,5,6,9]
>>> lisB=[1,6,5]
>>> lisC=[5,6,3]
>>> lisD=[11,14,12,15]
>>> list_common_continuity_comp(lisA, lisB)
True
>>> list_common_continuity_comp(lisA, lisC)
True
>>> list_common_continuity_comp(lisA, lisD)
False
>>> list_common_continuity_comp(lisD, lisA)
False
>>> list_common_continuity_comp(lisA, lisA)
True
>>> list_common_continuity_comp(lisB, lisA)
True


That gets you a binary comparison. To make it a polyadic:


>>> def multi_list_continuity_comp(list_of_lists):
        list1 = list_of_lists[0]
        for other_list in list_of_lists[1:]:
                if not list_common_continuity_comp(list1, other_list):
                        return False
        return True

>>> meta_list1 = [lisA, lisB, lisC, lisD]
>>> meta_list2 = meta_list1[:-1]
>>> multi_list_continuity_comp(meta_list1)
False
>>> multi_list_continuity_comp(meta_list2)
True
>>>


Some edge cases haven't been handled:

>>> multi_list_continuity_comp([])

Traceback (most recent call last):
  File "<pyshell#101>", line 1, in -toplevel-
    multi_list_continuity_comp([])
  File "<pyshell#95>", line 2, in multi_list_continuity_comp
    list1 = list_of_lists[0]
IndexError: list index out of range
>>>

but this should get you started.

Best,

Brian vdB




--
Thanks!
Ben Bush
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to