python - 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
解决方案
output = s
仅使名称output
指向s
。
如果您想浅复制s
到output
,请执行output = s[:]
(适用于列表等)。
除此之外,真的很难尝试遵循程序的逻辑,尤其是所有那些看起来像线条噪音的双下划线......
推荐阅读
- android - Android Studio 显示不正确的内容
- python - 更新多个 DynamoDB 项目的最佳实践
- php - Cron 作业神秘地运行和停止?
- jquery - jQuery - 仅在列表为空时运行函数
- excel - Excel VBA - 如何通过列号选择一列并在与两个不同的工作表比较后在一个工作表中插入一个新列?
- sublimetext3 - 没有权限
- jquery - 将多个 Plotly 离线图加载到 HTML DOM
- pip - 将 pip 与多个注册表一起使用时处理名称冲突
- android - 我不知道如何在不使用 Kotlin 中的按钮的情况下切换屏幕
- sql - 如何根据 PySpark 中的条件进行分组