On Thursday, March 2, 2017 at 3:31:36 PM UTC-5, Jussi Piitulainen wrote: > Andrew Zyman writes: > > > On Thursday, March 2, 2017 at 2:57:02 PM UTC-5, Jussi Piitulainen wrote: > >> Peter Otten <__pete...@web.de> writes: > >> > >> > Andrew Zyman wrote: > >> > > >> >> On Thursday, March 2, 2017 at 11:27:34 AM UTC-5, Peter Otten wrote: > >> >>> Andrew Zyman wrote: > >> >>> ..... > >> >>> ..... > >> >>> > End result: > >> >>> > ll =[ [a,1], [b,2], [c,3], [blah, 1000, 'new value'] ] > >> >>> > >> >>> >>> outer = [["a", 1], ["b", 2], ["c", 3], ["blah", 1000]] > >> >>> >>> for inner in outer: > >> >>> ... if inner[0] == "blah": > >> >>> ... inner.append("new value") > >> >> > >> >> thank you. this will do. > >> >> Just curious, is the above loop can be done in a one-liner? > >> > > >> > Ah, that newbie obsession ;) > >> > > >> >>>> outer = [["a", 1], ["b", 2], ["c", 3], ["blah", 1000]] > >> >>>> [inner + ["new value"] if inner[0] == "blah" else inner for inner in > >> > outer] > >> > [['a', 1], ['b', 2], ['c', 3], ['blah', 1000, 'new value']] > >> > > >> > Note that there is a technical difference to be aware of -- matching > >> > lists are replaced rather than modified. > >> > >> I take it you are too sane, or too kind, to suggest the obvious > >> solution: > >> > >> >>> outer = [["a", 1], ["b", 2], ["c", 3], ["blah", 1000]] > >> >>> [inner.append("new value") for inner in outer if inner[0] == "blah"] > >> [None] > >> >>> outer > >> [['a', 1], ['b', 2], ['c', 3], ['blah', 1000, 'new value']] > >> > >> [snip] > > > > Arh!!! this is it :) > > > > I'm sure i'll regret this line of code in 2 weeks - after i > > successfully forget what i wanted to achieve :) > > Jokes aside, you should strive to express your intention in your code. > Be kind to your future self. Write the three-line loop if you want > in-place modification. > > I use comprehensions a lot, but not to save lines. I might make Peter's > expression above a four-liner to make its structure more visible: > > res = [ ( inner + ["new value"] > if inner[0] == "blah" > else inner ) > for inner in outer ] > > Maybe.
thank you gentlemen. This is very helpful discussion and i appreciate your explanations - helped a lot. -- https://mail.python.org/mailman/listinfo/python-list