grkunt...@gmail.com writes: > I am just learning Python. > > I am trying to create a list of empty lists: [[], [], [], ...] (10 > items total). > > What is the most Pythonic way to do this? > > If I use a list comprehension (as in myList = [[] for item in xrange > (0, 10)]), Netbeans warns me that 'item' is never used.
IMHO this is the best way. > If I use a for-loop (as in for item in myList = []; for item in xrange > (0, 10): myList.append([])), Netbeans still warns me of the same > thing. > > If I use '*' (as myList = [[]] * 10), all of the empty lists refer to > the same object; changing one changes them all. > > Do I have to live with the warning, or is there a "better" way? You could do this: >>> map(list, [()]*10) [[], [], [], [], [], [], [], [], [], []] But it is wasteful as it creates two lists. There are some contrived ways to go around this using using itertools, e.g. >>> from itertools import * >>> map(list, repeat((), 10)) [[], [], [], [], [], [], [], [], [], []] Note that if you use Python 3 you would get an iterator so it would need to be wrapped in a list() call. Or you could take advantage of iter(function, sentinel) which is little used: >>> list(islice(iter(list, None), 10)) [[], [], [], [], [], [], [], [], [], []] But none of these are very compelling. -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list