On Jul 21, 6:15 pm, Andrew Freeman <[EMAIL PROTECTED]> wrote: > Samir wrote: > > On Jul 21, 3:20 pm, Gary Herron <[EMAIL PROTECTED]> wrote: > > >> Samir wrote: > > >>> Hi Everyone, > > >>> I am relatively new to Python so please forgive me for what seems like > >>> a basic question. > > >>> Assume that I have a list, a, composed of nested lists with string > >>> representations of integers, such that > > >>> a = [['1', '2'], ['3'], ['4', '5', '6'], ['7', '8', '9', '0']] > > >>> I would like to convert this to a similar list, b, where the values > >>> are represented by integers, such as > > >>> b = [[1, 2], [3], [4, 5, 6], [7, 8, 9, 0]] > > >>> I have unsuccessfully tried the following code: > > >>> n = [] > >>> for k in a: > >>> n.append([int(v) for v in k]) > >>> print n > > >>> Does anyone know what I am doing wrong? > > >>> Thanks in advance. > > >>> Samir > >>> -- > >>>http://mail.python.org/mailman/listinfo/python-list > > >> You didn't tell us how it failed for you, so I can't guess what's wrong. > > >> However, your code works for me: > > >> >>> a = [['1', '2'], ['3'], ['4', '5', '6'], ['7', '8', '9', '0']] > >> >>> n = [] > >> >>> for k in a: > >> ... n.append([int(v) for v in k]) > >> ... > >> >>> print n > >> [[1, 2], [3], [4, 5, 6], [7, 8, 9, 0]] > > >> (Although you seem to have confused variables b and n.) > > >> Gary Herron- Hide quoted text - > > >> - Show quoted text - > > > Hi Gary, > > > Thanks for your quick response (and sorry about mixing up b and n). > > For some reason, the logic I posted seems to work ok while I'm using > > the Python shell, but when used in my code, the program just hangs. > > It never outputs the results. Below is the code in its entirety. Is > > there a problem with my indendentation? > > > a = n = [] > > t = """ > > 1 2 > > 3 > > 4 5 6 > > 7 8 9 0 > > """ > > > d = t.split("\n") > > > for x in range(1,len(d)-1): > > a.append(d[x].split(" ")) > > print a > > > for k in a: > > n.append([int(v) for v in k]) > > > print n > > > Thanks again. > > > Samir > > -- > >http://mail.python.org/mailman/listinfo/python-list > > I think this will work better, a sub-list comprehension of sorts: > n = [[int(i) for i in k] for k in a] > > here is an ipython interactive session using it: > In [1]: a = n = [] > > In [2]: t = """ > ...: 1 2 > ...: 3 > ...: 4 5 6 > ...: 7 8 9 0 > ...: """ > > In [3]: > > In [4]: d = t.split("\n") > > In [5]: for x in range(1,len(d)-1): > ...: a.append(d[x].split(" ")) > ...: > ...: > > In [6]: a > Out[6]: [['1', '2'], ['3'], ['4', '5', '6'], ['7', '8', '9', '0']] > > In [7]: n = [[int(i) for i in k] for k in a] > > In [8]: n > Out[8]: [[1, 2], [3], [4, 5, 6], [7, 8, 9, 0]] > -- > Andrew- Hide quoted text - > > - Show quoted text -
Andrew, Thanks for the tip, though the syntax makes my head spin a bit in trying to comprehend it. For my small list, I didn't notice a discernible increase in speed, but I may have to try it with a larger list size. Incidentally, I had never heard of iPython but from their web site, it looks like an interesting tool. I'll have to check it out. Thanks. Samir -- http://mail.python.org/mailman/listinfo/python-list