Python for循环如何避免列表重复累加,每轮生成独立结果列表
问题原因
NEW_middle_index 是全局作用域的列表变量,你没有在每轮处理单个文件前清空/重新初始化它,所以每轮循环的计算结果都会追加到同一个列表里,导致历史内容累加。
解决方法
在处理单个文件的外层循环内部,先把 NEW_middle_index 初始化为空列表,保证每轮循环都生成独立的新列表。
修正后代码
import os import pandas as pd import numpy as np # Function to find middle index def find_midd(input_list): 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) # 每轮处理新文件前先初始化列表,清空历史内容 NEW_middle_index = [] lis = [5,10,12, 15 , 17] for i in lis: ans = middleIndex+15*i NEW_middle_index.append(ans) print(NEW_middle_index)
运行上述代码后输出就会和预期一致。
内容的提问来源于stack exchange,提问作者john22
相关产品推荐
相关产品推荐

