Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #32088

Re: turn list of letters into an array of integers

Newsgroups comp.lang.python
Date 2012-10-24 21:27 -0700
References <07073002-d79f-46f6-83fc-8d20c51b39c3@googlegroups.com> <mailman.2727.1351058849.27098.python-list@python.org>
Subject Re: turn list of letters into an array of integers
From seektime <michael.j.krause@gmail.com>
Message-ID <mailman.2810.1351139258.27098.python-list@python.org> (permalink)

Show all headers | View raw


On Tuesday, October 23, 2012 11:07:29 PM UTC-7, Chris Rebert wrote:
> On Tue, Oct 23, 2012 at 10:23 PM, seektime <michael.j.krause@gmail.com> wrote:
> 
> > Here's some example code. The input is a list which is a "matrix" of letters:
> 
> >    a  b  a
> 
> >    b  b  a
> 
> >
> 
> > and I'd like to turn this into a Python array:
> 
> 
> 
> You mean a Python list. The datatype Python calls an `array` is very
> 
> different and relatively uncommonly used.
> 
> Although, confusingly, Python's lists are implemented using C arrays
> 
> rather than linked lists.
> 
> 
> 
> >   1 2 1
> 
> >   2 2 1
> 
> >
> 
> > so 1 replaces a, and 2 replaces b. Here's the code I have so far:
> 
> >
> 
> >>>> L=['a b a\n','b b a\n']
> 
> <snip>
> 
> >>>> seq
> 
> > '1 2 1\n 2 2 1\n'
> 
> >
> 
> > My question is how can I turn "seq" into a python array?
> 
> 
> 
> I'd say you're asking the wrong question. The better question is "Why
> 
> wasn't the result a list in the first place?". Many transformations
> 
> are cumbersome to express over just strings, which is why the first
> 
> job of most programs is to parse their input into a more convenient
> 
> structure that is suited to their main task(s).
> 
> 
> 
> This (along with some other improvements) leads to a better, somewhat
> 
> different program/algorithm:
> 
> 
> 
> letter2number = {'a': 1, 'b': 2}
> 
> with open("path/to/file.txt", "r") as f:
> 
>     result = [[letter2number[letter] for letter in
> 
> line.strip().split()] for line in f]
> 
> 
> 
> If it's safe to assume that the correspondence between the letters and
> 
> numbers isn't completely arbitrary, some further improvements are also
> 
> possible.
> 
> 
> 
> Some relevant docs:
> 
> http://docs.python.org/library/stdtypes.html#string-methods
> 
> http://docs.python.org/tutorial/datastructures.html#list-comprehensions
> 
> 
> 
> Cheers,
> 
> Chris
> 
> 
> 
> P.S.: I'm guessing you obtained `L` from file.readlines() or similar;
> 
> it is worth noting for future reference that the readlines() method is
> 
> considered somewhat deprecated.

Thanks to everyone lots of great comments are actionable suggestions. 

My intension is to used the numpy/scipy packages to solve the task at hand. I agree that there's no point in loading a file into a format which only needs to be converted right after loading. But I'm new to Python the f.readline(s) command, according to the 2.7.3 tutorial and manual, is pretty much all there is for file i/o. If, as you indicated, f.readlines() is deprecated then what should I use instead? I'm using ver. 2.6 on Linux (it's a bit dated, I know).

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

turn list of letters into an array of integers seektime <michael.j.krause@gmail.com> - 2012-10-23 22:23 -0700
  Re: turn list of letters into an array of integers Demian Brecht <demianbrecht@gmail.com> - 2012-10-23 22:45 -0700
  Re: turn list of letters into an array of integers David Hutto <dwightdhutto@gmail.com> - 2012-10-24 01:50 -0400
  Re: turn list of letters into an array of integers Demian Brecht <demianbrecht@gmail.com> - 2012-10-23 22:51 -0700
  Re: turn list of letters into an array of integers Demian Brecht <demianbrecht@gmail.com> - 2012-10-23 22:54 -0700
  Re: turn list of letters into an array of integers Chris Rebert <clp2@rebertia.com> - 2012-10-23 23:07 -0700
    Re: turn list of letters into an array of integers 88888 Dihedral <dihedral88888@googlemail.com> - 2012-10-24 05:03 -0700
      Re: turn list of letters into an array of integers Robert Kern <robert.kern@gmail.com> - 2012-10-24 13:22 +0100
    Re: turn list of letters into an array of integers 88888 Dihedral <dihedral88888@googlemail.com> - 2012-10-24 05:03 -0700
    Re: turn list of letters into an array of integers seektime <michael.j.krause@gmail.com> - 2012-10-24 21:27 -0700
      Re: turn list of letters into an array of integers Chris Rebert <clp2@rebertia.com> - 2012-10-24 21:52 -0700
    Re: turn list of letters into an array of integers seektime <michael.j.krause@gmail.com> - 2012-10-24 21:27 -0700
  Re: turn list of letters into an array of integers Peter Otten <__peter__@web.de> - 2012-10-24 09:47 +0200
  Re: turn list of letters into an array of integers Peter Otten <__peter__@web.de> - 2012-10-24 11:04 +0200
  Re: turn list of letters into an array of integers Terry Reedy <tjreedy@udel.edu> - 2012-10-24 11:56 -0400
  Re: turn list of letters into an array of integers MRAB <python@mrabarnett.plus.com> - 2012-10-24 18:05 +0100
  Re: turn list of letters into an array of integers wxjmfauth@gmail.com - 2012-10-24 10:27 -0700
    Re: turn list of letters into an array of integers Demian Brecht <demianbrecht@gmail.com> - 2012-10-24 10:36 -0700
  Re: turn list of letters into an array of integers Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2012-10-24 15:57 -0400
  [OT] Re: turn list of letters into an array of integers Peter Otten <__peter__@web.de> - 2012-10-25 07:47 +0200
    Re: [OT] Re: turn list of letters into an array of integers Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-10-25 07:49 +0000
      Re: [OT] Re: turn list of letters into an array of integers Peter Otten <__peter__@web.de> - 2012-10-25 10:25 +0200
      Re: [OT] Re: turn list of letters into an array of integers Mark Lawrence <breamoreboy@yahoo.co.uk> - 2012-10-25 09:55 +0100
  RE: turn list of letters into an array of integers "Prasad, Ramit" <ramit.prasad@jpmorgan.com> - 2012-10-25 21:27 +0000

csiph-web