python里list如何替换顺序

如何解决这个for loop 循环里的bug?

img

img

img

img

希望在不大动代码的情况下解决,实在不知道怎么改了🙁

下面是源代码:
def rotate_model(fname_in, fname_out):
import os
if os.path.exists(fname_in)==True:
fp=open(fname_in)
line=fp.read()
fp_f=line.find('f')
line1=line[:fp_f]
line1_list=line1.split(' ')
x=1

for x in line1_list:
  line1_list[x]= line1_list[x+1]
  line1_list[x+1]=('-'+line1_list[x])
  x+=3

return line1_list







fname_out.close()  

else:
return -1


try:
    with open(r"","r") as f:
        ls = f.readlines()
        for i in range(len(ls)):
            ls[i] = ls[i].split()
            for j in range(1,len(ls[i])):
                ls[i][j] = eval(ls[i][j])
            ls[i][1],ls[i][2] = ls[i][2],-1*ls[i][1]
except:
    print("no such file")
                
            

你的问题其实只是因为下图中框起来的 '-'+line1_list[x] 报错

img

line1_list[x]是数值类型,'-'是字符串类型,在python中是不允许数值类型与字符串类型的相加操作的,所以把 '-'+line1_list[x] 改成 -line1_list[x] 就可以了

交换值 3部曲:
t=a
a=b
b=t

def rotate_model(fname_in, fname_out):
    # if os.path.exists(fname_in) == True:
    #     fp = open(fname_in)
    # line = fp.read()
    # fp_f = line.find('f')
    # line1 = line[:fp_f]
    # line1_list = line1.split(' ')
    line1_list = ['v', '-2.0', '0.0', '0.0\nv', 'v', '0.0', '0.0', '0.0\nv', 'v', '-1.0', '0.0', '0.0\nv', 'v', '0.0',
                  '0.0', '0.0\nv',
                  'v', '2.0', '0.0', '0.0\nv', 'v', '1.0', '0.0', '0.0\nv', 'v', '-1.0', '0.0', '0.0\nv', 'v', '1.0',
                  '0.0', '0.0\nv',
                  'v', '0.0', '0.0', '0.0\nv']
    print(line1_list)
    x = 1

    for i in enumerate(range(0, len(line1_list), 4)):
        t1 = line1_list[x]  # 先保留值,避免下边交换被覆盖
        line1_list[x] = line1_list[x + 1]
        line1_list[x + 1] = -eval(t1)  # 数值才能进行计算
        x += 4

    return line1_list


print('origin:')
print('after:\n', rotate_model('', ''))

你先整理好需求,就是你最终要实现的效果,而不要诉说你不成熟的方案
什么交换后在前面加个负号,万一数据本来就已经有负号了,不变成俩负号了?