Chris Rebert於 2012年10月24日星期三UTC+8下午2時07分29秒寫道: > On Tue, Oct 23, 2012 at 10:23 PM, seektime <michael.j.kra...@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.
The list in python is a list of valid python objects. For the number crunching part, please use arrays in numarray and scipy. > > > 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. -- http://mail.python.org/mailman/listinfo/python-list