Skip to main content
 首页 » 编程设计

Python循环疑惑

2025年05月04日14luoye11

我有一个名为 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]