2017-07-22 3 views
0

私はPythonの初心者です。次の問題を解決しようとしています。私は、テキストファイルの行の配置を生成し、その行に沿ってリストを移動するスクリプトを用意しています。だから、ここに私のスクリプトの問題一部です:リストによるテキストファイルの行の整列

with open('POSCAR2', "r+") as f: 
    line = f.readlines() 
    N = line[0:4] 
    Y = [1, 4, 2, 3] 
    line = [x for (y,x) in sorted(zip(Y,N), key=lambda x: x[0])] 
    f.seek(0) 
    f.writelines(line) 

初期配置は、1,3,4 [それはなったスクリプトを実行した後、[1,2,3,4]

0.0   0.0   0.0 
0.0   0.0   0.5 
0.0   0.5   0.0 
0.5   0.0   0.0 

ました2]

0.0   0.0   0.0 
0.0   0.5   0.0 
0.5   0.0   0.0 
0.0   0.0   0.5 

しかし[私は[1,4,2,3]が必要です。

リストに基づいて行を並べ替えるにはどうすればよいですか?

+0

どのようにして行の最終的な順序を決定しますか? –

答えて

0

YはYを[Y]に置換するのでY = [1,3,4,2]となります。

[1,4,2,3]から取得するには[Yのiのために[Y-i]を行うことができます。 またはコードに追加してください。

line = [x for (y,x) in sorted(zip(Y,N), key=lambda x: Y[x[0]-1])] 
+0

完璧、ありがとう、智樹! – Michael

関連する問題