2012-03-23 21 views
0

.txtファイルから行を取り出し、それを空白を除いたリストに変換するコードがあります。リストをPythonのリスト内の単一の要素に分ける

次のようになります。私はここで何をしたいのか

['TTTTT', 'TTHHT', 'HHTHT', 'HHHHH', 'THTHT', ''] 

はこのように見えるように入れて電源を入れている:

[['T', 'T', 'T', 'T', 'T'], ['T', 'T', 'H', 'H', 'T',] etc...] 
出力は次のようになります

fd = open(filename,'rU') 
chars = [] 
for line in fd: 
    chars.append(line.strip()) 

return chars 

私はそれらを1つの要素に分割するだけでなく、元のリストの中に保持したいと思います。

+0

何を計画しているような二行で行われていますか?あなたは、弦を繰り返し処理して、同じ方法でインデックスを付けることができることを知っていますか?インプレースで変更することはできません。 –

答えて

4

liststrと変更することを除いて、ほとんど何でもできるので、これをやりたいのはわかりません。

あなたが正当な理由を持っていると仮定すると、あなたはおそらく

chars = map(list, chars) 

はそれを行うだろう、

for line in fd: 
    chars.append(list(line.strip())) 

またはループの後にあなたのループを変更したいです。それはcharsの各項目にlistを実行します。

Python 2では、結果としてlistが生成されます。 Pythonの3オン

リスト-O-リストとしてそれをバックしたい場合、あなたは

chars = list(map(list, chars)) 

または

chars = [list(sublist) for sublist in chars] 

を行う必要があります。

+1

これをすべて1つの行にまとめる: 'open(filename、 'fU')をfとして返す:f [in]の行に対して[list(line.strip())'を返す。または、ファイルを閉じるために参照カウントに頼る場合は、 'lambda filename:l in open(filename、 'fU')]'のllst(l.strip())を実行します。 – Dougal

1
a = ['TTTTT', 'TTHHT', 'HHTHT', 'HHHHH', 'THTHT', ''] 
>>> 
>>> b = [list(x) for x in a] 
>>> b 
[['T', 'T', 'T', 'T', 'T'], ['T', 'T', 'H', 'H', 'T'], ['H', 'H', 'T', 'H', 'T'], ['H', 'H', 'H', 'H', 'H'], ['T', 'H', 'T', 'H', 'T'], []] 
>>> 
0

次のPythonのリスト内包はあなたの問題を解決します:

lVals = [list(x.strip()) for x in open(filename,'rU').readlines()] 
0
>>> data = ['TTTTT', 'TTHHT', 'HHTHT', 'HHHHH', 'THTHT', ''] 
>>> map(list, data) 
[['T', 'T', 'T', 'T', 'T'], ['T', 'T', 'H', 'H', 'T'], ['H', 'H', 'T', 'H', 'T'], ['H', 'H', 'H', 'H', 'H'], ['T', 'H', 'T', 'H', 'T'], []] 
0

使用すると、1つのライナー

map(list, list(open('test.py')))

または

0にしたい場合

が、これは最高のあなたはサブリストをどうするので

fileHandler = open('file.txt') 
fileData = map(list, list(fileHandler)) 
関連する問題