我有一个名为 gett(int) 的函数,它在每次调用时返回一个系列。当我这样写时它工作正常:
print gett(0)
print gett(1)
等等..
但是当我尝试在这样的 for 循环中自动执行相同操作时:
for a in range(28):
print gett(a)
它只对第一个值有效,我得到以下输出:
[..series..]
[]
[]
[]
[]
..and all others empty
我对 Python 非常陌生,所以这可能非常幼稚。非常感谢任何帮助。谢谢。
附言 获取函数:
trend = file("D:\\trend.csv", "r")
def gett(pos):
t = []
for x in trend:
temp = x.split(',')
temp = temp[4:]
t.append(temp)
t = t[25:]
temp = []
for a in t:
if a[pos] != '':
temp.append(a[pos])
############
t = temp
############
return t
请您参考如下方法:
在第一次迭代中,您正在完整地读取文件。
因此,在所有后续迭代中,将跳过整个 for x in trend: 循环。
这样的事情怎么样:
import csv
def read_csv():
with open("D:\\trend.csv", "rb") as f:
trend = csv.reader(f, delimiter=",")
temp = [row[4:] for row in trend]
return temp[25:]
def gett(data, pos):
return [a[pos] for a in data if a[pos] != ""]
现在你可以做
>>> mydata = read_csv()
>>> gett(mydata, 0)
[1, 2, 3, 4]
>>> gett(mydata, 1)
[5, 6, 7, 8]
