首页 > 解决方案 > python列表中的错误数据

问题描述

我正在尝试从列表中计算两个字符串变量之间的差异s__prev_data.为此我创建了一个output带有数据形式的临时变量s,将它们从 str 转换为 int 并计算output[0]__prev_data[]在对这些数据进行一些操作之后,我没有s 进行__prev_data任何操作s。但是,不知何故,s突然变得平等output并毁掉了整个剧本。这是我的代码:

    def __printCSVRow(self): #Print data to file
        s = []
        for full_label in self.__csv_columns:
            v = self.__csv_data[full_label]
            if v == None:
                v = self.__csv_null
            else:
                v = str(v)

            #if full_label != self.__time_msg:
            if len(v) > 10:
                v = v[:8]
            elif len(v) < 8 and len(v) > 3:
                v += "\t"
            elif len(v) <= 3:
                v += "\t\t"
            s.append(v)
        output = s
        if self.__prev_data: #if __prev_data is not empty
            diff = ((int(output[0]) - int(self.__prev_data[0])) // 100000) #calculate the difference
            for i in range(1, diff + 1): #Some operations
                output[0] = str(self.__msg_count * 100)
                self.__msg_count += 1 #increase __msg_count
                if self.__file != None: #print to file
                    print(self.__csv_delim.join(output), file=self.__file)
                else:
                    print(self.__csv_delim.join(output))
        else: #if __prev_data is empty
            output[0] = str(self.__msg_count) #set output[0] to 0
            if self.__file != None: #print to file
                print(self.__csv_delim.join(output), file=self.__file)
            else:
                print(self.__csv_delim.join(output))
            self.__msg_count+=1  #increase __msg_count
        self.__prev_data = s #set __prev_data == s

标签: pythonlist

解决方案


output = s仅使名称output指向s

如果您想浅复制soutput,请执行output = s[:](适用于列表等)。

除此之外,真的很难尝试遵循程序的逻辑,尤其是所有那些看起来像线条噪音的双下划线......


推荐阅读