我是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,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
运行脚本后,它变为[1,3,4,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正在将条目i置换为Y [i],所以Y = [1,3,4,2]。
要从[1,4,2,3]获得,你可以在[Y]中为我做[Y [i-1]],这将介于它们之间。 或者将其添加到您的代码中。
line = [x for (y,x) in sorted(zip(Y,N), key=lambda x: Y[x[0]-1])]