For循环将所有数字附加到变量

时间:2015-11-10 11:33:20

标签: python for-loop

我编写了一些代码来打开文本文件并获取我需要的列并将其分配给变量。 for循环之前的所有内容都可以。现在在循环中,我希望将g中的所有数字作为双精度列表,但是所有时间我只有最后一个lis1

提前致谢。

代码:

import numpy as N
import math as M

with open('File.txt',"r") as f:
    lis1 = [float(line.split()[4]) for line in f]
    f.seek(0)
    lis2 = [float(line.split()[6]) for line in f]
    f.seek(0)
    lis3 = [float(line.split()[8]) for line in f]
    f.seek(0)
    lis4 = [float(line.split()[10]) for line in f]
    f.seek(0)
    lis5 = [float(line.split()[12]) for line in f]
    f.seek(0)
    lis6 = [float(line.split()[14]) for line in f]
    i= 0
    j = i+1

    for t in (lis1):
        g = ((lis1[i:j]))                                   
        k = ((lis2[i:j]))                                          
        kl = ((lis3[i:j]))                                    
        kk = ((lis4[i:j]))
        kk2 = ((lis5[i:j]))
        kk3 = ((lis6[i:j]))
        i = i+1
        j = j+1

2 个答案:

答案 0 :(得分:1)

您的问题是,在循环的每次运行中,您都会分配g=lis1[i:j],这会使g以循环中的值lis1[i:j]结束(这只是最后一个元素) lis1)。

如果您希望g包含lis1的所有元素,则只需复制lis1

import numpy as N
import math as M

with open('File.txt',"r") as f:
    lis1 = [float(line.split()[4]) for line in f]
    f.seek(0)
    lis2 = [float(line.split()[6]) for line in f]
    f.seek(0)
    lis3 = [float(line.split()[8]) for line in f]
    f.seek(0)
    lis4 = [float(line.split()[10]) for line in f]
    f.seek(0)
    lis5 = [float(line.split()[12]) for line in f]
    f.seek(0)
    lis6 = [float(line.split()[14]) for line in f]

    g = []

    for t in (lis1):
        g.append(t)                          

但当然人们会想知道你为什么要这样做(你已经在lis1中开始) - 你可以直接复制为g=lis1[:]甚至{{}来做到这一点。 1}}。

答案 1 :(得分:1)

问题是g在每次迭代中都会更新。

最后如果for t loops 10你应该有g =((list1 [10:11]))

list1=[0,1,2,3,4,5,6,7,8,9]
i=0  
j=i+1  
for t in list1:  
    g=((list1[i:j]))  
    i+=1  
    j+=1  
...
g = (([9]))

我们必须从最后一个索引到...,这将返回最后一个元素。