turn list of letters into an array of integers
MRAB
python at mrabarnett.plus.com
Wed Oct 24 13:05:43 EDT 2012
More information about the Python-list mailing list
Wed Oct 24 13:05:43 EDT 2012
- Previous message (by thread): [OT] Re: turn list of letters into an array of integers
- Next message (by thread): turn list of letters into an array of integers
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 2012-10-24 07:07, Chris Rebert wrote: > On Tue, Oct 23, 2012 at 10:23 PM, seektime <michael.j.krause at 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 you're using .split() then you don't need to use .strip() as well: result = [[letter2number[letter] for letter in line.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. >
- Previous message (by thread): [OT] Re: turn list of letters into an array of integers
- Next message (by thread): turn list of letters into an array of integers
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list