Timothy Babytch wrote: > Hi all. > > I have a list that looks like [['N', 'F'], ['E'], ['D']] > I try to make it flat one: ['N', 'F', 'E', 'D'] > > How can I archieve such an effect with list comprehension? > Two cycles did the job, but that way did not look pythonic.. > > I tried > print [x for x in y for y in c_vars] > and got NameError: name 'y' is not defined. >
The order of the for expressions is as it would be for nested loops: >>> items = [['N', 'F'], ['E'], ['D']] >>> [y for x in items for y in x] ['N', 'F', 'E', 'D'] I would still prefer a for loop because it spares you from iterating over the sublist items in python: >>> data = [] >>> for sub in [['N', 'F'], ['E'], ['D']]: ... data.extend(sub) ... >>> data ['N', 'F', 'E', 'D'] Peter -- http://mail.python.org/mailman/listinfo/python-list