On Wed, 19 Jan 2005 22:04:44 -0500, Bob Smith <[EMAIL PROTECTED]> wrote:
>Hi, > >I have a Python list. I can't figure out how to find an element's >numeric value (0,1,2,3...) in the list. Here's an example of what I'm doing: > >for bar in bars: > if 'str_1' in bar and 'str_2' in bar: > print bar > >This finds the right bar, but not its list position. The reason I need >to find its value is so I can remove every element in the list before it >so that the bar I found somewhere in the list becomes element 0... does >that make sense? > sneaky (python 2.4) one-liner (not tested beyond what you see, and not recommended as the best self-documenting version ;-) >>> bars = [ ... 'zero', ... 'one', ... 'str_1 and str_2 both in line two', ... 'three', ... 'four', ... 'str_1 and str_2 both in line five', ... 'last line'] >>> newbar=bars[sum(iter(('str_1' not in bar or 'str_2' not in bar for bar in >>> bars).next, 0)):] >>> for s in newbar: print repr(s) ... 'str_1 and str_2 both in line two' 'three' 'four' 'str_1 and str_2 both in line five' 'last line' Alternatively: >>> newbar=bars[[i for i,v in enumerate(bars) if 'str_1' in v and 'str_2' in >>> v][0]:] >>> for s in newbar: print repr(s) ... 'str_1 and str_2 both in line two' 'three' 'four' 'str_1 and str_2 both in line five' 'last line' Alternatively: >>> newbar = list(dropwhile(lambda x: 'str_1' not in x or 'str_2' not in x, >>> bars)) >>> for s in newbar: print repr(s) ... 'str_1 and str_2 both in line two' 'three' 'four' 'str_1 and str_2 both in line five' 'last line' Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list