[EMAIL PROTECTED] writes: > hi tim > thanks for the help > acutally i dint tell u the whole problem > i have list of lists, for ex > > list1 =[ ['a','b','c','d','e'] , ['1','2','3','4'] , ['A','B','C','D'] > ] > > and another list > > list2 = ['1','2','5',4] > > now am searching the items of list2 in list1 as below > > Found = True > for i in list1: > for j in i: > if not list2[1] == j or not list2[2] == j: > if not list2[0] == j: > Found = False > elif list2[0] == j: > Found = True > break > > now though it finds the the key in between and sets the "Found=True", > but later in the next list of if one item doesnt match it sets again > Found = False > > i hope am clear this time
You have half the solution. Basically, you should set Found to one state, and then only set it againn if it changes. For instance: Found = True for i in list1: for j in i: if not list2[1] == j or not list2[2] == j: if not list2[0] == j: Found = False This will exit the outer loop with Found being False if and only if the nested if's in your inner loop set it to False; you never need to set it to True. Alternatively, set the initial state to False, and only set it to True if you find something. For efficiency, you can break from the inner loop, and then check found after the inner loop and break a second time if it's changed. BTW, the nested ifs in your inner loop don't do what your description says they should. <mike Mike Meyer <[EMAIL PROTECTED]> http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list