首页 > 解决方案 > 如何在python的for循环中停止重复?

问题描述

我有一些应该阅读的文件。根据它们的长度,我必须使用 for 循环选择一些索引。问题是在for循环的每个循环中,它将过去的列表添加到下一个列表中,这是不正确的。我怎样才能停止这种重复并在每个循环中都有一个单独的列表。我写的代码如下:

import os
import pandas as pd
import numpy as np

# Function to find middle index
def find_midd(input_list): #middleIndex %2 != 0:
    middleIndex = int(float(len(input_list))) /2
    if middleIndex %2 == 0:
        return middleIndex 
    else:
        return middleIndex - 0.5



file1= np.arange(0,1197)
file2= np.arange(0,1000)
file3= np.arange(0,1204)
file4= np.arange(0,1303)
file5= np.arange(0,1100)
file6= np.arange(0,1420)
file7= np.arange(0,999)

l = [f for f in sorted(os.listdir('.')) if f.startswith('file')]
for i, d in enumerate(l): 
  df = pd.read_csv(d,sep="\s+",header=None)
  e = df.iloc[:,5]
  c = df.iloc[:,4]
  
  df1 = pd.DataFrame()
  middleIndex = find_midd(e)
  middleIndex = int(middleIndex)
  lis = [5,10,12, 15 , 17]
  for i in lis:
   ans = middleIndex+15*i


   NEW_middle_index.append(ans)
  print(NEW_middle_index)


当前错误输出为:

[641, 716, 746, 791, 821]
[641, 716, 746, 791, 821, 682, 757, 787, 832, 862]
[641, 716, 746, 791, 821, 682, 757, 787, 832, 862, 598, 673, 703, 748, 778]
[641, 716, 746, 791, 821, 682, 757, 787, 832, 862, 598, 673, 703, 748, 778, 675, 750, 780, 825, 855]
[641, 716, 746, 791, 821, 682, 757, 787, 832, 862, 598, 673, 703, 748, 778, 675, 750, 780, 825, 855, 707, 782, 812, 857, 887]
[641, 716, 746, 791, 821, 682, 757, 787, 832, 862, 598, 673, 703, 748, 778, 675, 750, 780, 825, 855, 707, 782, 812, 857, 887, 693, 768, 798, 843, 873]

预期结果:

[641, 716, 746, 791, 821]
[682, 757, 787, 832, 862]
[598, 673, 703, 748, 778]
[675, 750, 780, 825, 855]
[707, 782, 812, 857, 887]
[693, 768, 798, 843, 873]

标签: pythonpandasnumpy

解决方案


在您的代码中,您将附加到相同的变量 NEW_middle_index。要解决此问题,您可以为每次迭代使用不同的变量。


推荐阅读