Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #32088
| 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) |
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 | Next — Previous in thread | Next in thread | Find similar | Unroll 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