Python函数传参数据类型异常:列表变为浮点数
解决Python列表传参时变为浮点数的类型错误
问题根源
你的代码中存在一个切片语法错误:当你想传入temperature_data的最后20个元素时,误写为simulated_environment.temperature_data[-20]——这会取出列表的倒数第20个单个浮点数元素,而非包含最后20个元素的子列表。正是这个错误导致plot_line函数收到的data参数类型是float,进而触发TypeError: object of type 'float' has no len()。
修复方案
将传参的索引语法改为切片语法[-20:],即可获取最后20个元素的子列表:
# 原错误代码 self.plot_line(simulated_environment.temperature_data[-20], color = "red", label = "Temperature") # 修正后代码 self.plot_line(simulated_environment.temperature_data[-20:], color = "red", label = "Temperature")
关键语法说明
Python列表的索引与切片区别:
list[n]:返回列表中第n个位置的单个元素(n为负数时表示倒数第|n|个元素)list[-n:]:返回列表的最后n个元素组成的子列表
修复后的预期运行输出
修正后,plot_line函数会收到正确的列表类型参数,运行输出将变为:
Temperature: 23.54 °C, Pressure: 102.80 kPa, Humidity: 41.43% 20 Sim Env Data is a List Data Length: 20 Plotting Temperature Data Sim Env: [24.604502008798338, 24.48558258335959, ..., 23.537914780551635] Type of data: <class 'list'> Data is a List Length: 20
内容的提问来源于stack exchange,提问作者CodingSince2022
相关产品推荐
相关产品推荐

