On Aug 1, 11:09 am, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote: > On Aug 1, 9:37 am, beginner <[EMAIL PROTECTED]> wrote: > > > > > > > Hi, > > > Does anyone know how to put an assertion in list comprehension? I have > > the following list comprehension, but I want to use an assertion to > > check the contents of rec_stdl. I ended up using another loop which > > essentially duplicates the functions of list comprehension. It just > > look like a waste of coding and computer time to me. > > > I just wish I could put the assertions into list comprehensions. > > > x=[(rec_stdl[0].st/10000.0, > > rec_stdl[0].cl, > > rec_stdl[0].bb, > > rec_stdl[0].bo, > > rec_stdl[1].bb, > > rec_stdl[1].bo, > > rec_stdl[0].ex > > ) > > for rec_stdl in rec_by_ex if len(rec_stdl)==2 > > ] > > > #duplicated loop > > if __debug__: > > for rec_stdl in rec_by_ex: > > l=len(rec_stdl) > > assert(l<=2 and l>0) > > if l==2: > > assert(rec_stdl[0].c=="C" and rec_stdl[1].c=="P") > > assert(rec_stdl[0].ex==rec_stdl[1].ex) > > assert(rec_stdl[0].st==rec_stdl[1].st) > > assert(rec_stdl[0].cp==rec_stdl[1].cp) > > > Thanks, > > Geoffrey > > Can't you just call a function from within your list comprehension and > do whatever you want for each item? Something like this (not tested): > > def checker(item): > assert(len(item) <= 2 and len(item) > 0) > if len(item) == 2: > assert(item[0].c == "C" and item[1].c == "P" > > return len(item) == 2 > > x = [whatever for item in all_items if checker(item = item)]- Hide quoted > text - > > - Show quoted text -
Good idea! Thank you! -- http://mail.python.org/mailman/listinfo/python-list