On Saturday, October 1, 2016 at 7:48:19 AM UTC+5:30, John Gordon wrote: > In Sayth Renshaw writes: > > > I want to go threw and for each index error at [4] append a 0. > > You want to append 0 if the list does not have at least 5 items? > > > p = re.compile('\d+') > > fups = p.findall(nomattr['firstup']) > > [x[4] for x in fups if IndexError fups.append(0)] > > print(fups) > > > Unsure why I cannot use append in this instance > > Because that's incorrect syntax. > > > how can I modify to acheive desired output? > > for f in fups: > if len(f) < 5: > f.append(0) > > Or, if you really want to use a list comprehension: > > [f.append(0) for f in fups if len(f) < 5]
Wrong fups = [['0', '0', '0', '0'], ['0', '0', '0', '0'], ['0', '0', '0', '0'], ['0', '0', '0', '0'], ['0', '0', '0', '0'], ['0', '0', '0', '0'], ['7', '2', '1', '0', '142647', '00'], ['7', '2', '0', '1', '87080', '00'], ['6', '1', '1', '1', '51700', '00'], ['4', '1', '1', '0', '36396', '00'] ] >>> [f.append(0) for f in fups if len(f) < 5] [None, None, None, None, None, None] Or right if you re-squint: >>> fups [['0', '0', '0', '0', 0], ['0', '0', '0', '0', 0], ['0', '0', '0', '0', 0], ['0', '0', '0', '0', 0], ['0', '0', '0', '0', 0], ['0', '0', '0', '0', 0], ['7', '2', '1', '0', '142647', '00'], ['7', '2', '0', '1', '87080', '00'], ['6', '1', '1', '1', '51700', '00'], ['4', '1', '1', '0', '36396', '00']] >>> Which is to say that imperative code — .append — inside a comprehension is a bad idea One comprehension way to do it would be: >>> [(f + ['0'] if len(f) < 5 else f) for f in fups ] [['0', '0', '0', '0', '0'], ['0', '0', '0', '0', '0'], ['0', '0', '0', '0', '0'], ['0', '0', '0', '0', '0'], ['0', '0', '0', '0', '0'], ['0', '0', '0', '0', '0'], ['7', '2', '1', '0', '142647', '00'], ['7', '2', '0', '1', '87080', '00'], ['6', '1', '1', '1', '51700', '00'], ['4', '1', '1', '0', '36396', '00']] -- https://mail.python.org/mailman/listinfo/python-list