On 2/28/2013 2:47 PM, The Night Tripper wrote:
Hi there
I'm being very dumb ... how can I simplify this fragment?
if arglist:
arglist.pop(0)
if arglist:
self.myparm1 = arglist.pop(0)
if arglist:
self.myparm2 = arglist.pop(0)
if arglist:
self.myparm3 = arglist.pop(0)
if arglist:
self.parm4 = arglist.pop(0)
To literally do the same thing
try:
arglist.pop(0)
self.myparm1 = arglist.pop(0)
self.myparm2 = arglist.pop(0)
self.myparm3 = arglist.pop(0)
self.parm4 = arglist.pop(0)
except IndexError:
pass
However, repeated popping from the front is O(n**2) instead of O(n).
Following should do the same, including removal from original arglist.
it = iter(arglist)
n = 0
try:
next(it); n += 1
self.myparm1 = next(it); n += 1
self.myparm2 = next(it); n += 1
self.myparm3 = next(it); n += 1
self.parm4 = next(it); n += 1
except StopIteration:
pass
arglist = arglist[n:]
--
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list