Python中如何遍历嵌套列表完成datetime类型数据处理?
错误原因
你写的两层for循环是逻辑出错的核心:
- 外层循环
for x in 列表已经拿到了每一个包含6个元素的子列表,比如第一次循环的x就是['2020', '05', '20', '22', '24', '16.7929'] - 你加的内层循环
for a,b,c,d,e,f in x会继续迭代x里的每一个元素,第一个迭代到的就是字符串'2020',Python会尝试把这个字符串拆成单个字符给6个变量赋值,自然就会出现解包失败的问题。
额外提示:不要用list作为变量名,会覆盖Python内置的列表类型,容易引发后续其他逻辑错误
正确实现
直接对每个外层循环拿到的子列表做解包即可,不需要额外加内层循环:
import datetime as dt raw_data = [['2020', '05', '20', '22', '24', '16.7929'], ['2020', '05', '29', '05', '50', '12.4465'], ['2020', '05', '29', '06', '44', '34.1706']] timestamp_list = [] for item in raw_data: # 直接解包当前子列表的6个元素 a, b, c, d, e, f = item ts = dt.datetime(int(a), int(b), int(c), int(d), int(e), round(float(f))).timestamp() timestamp_list.append(ts) print(timestamp_list)
如果需要更简洁的写法,也可以用列表推导式:
timestamp_list = [dt.datetime(int(a), int(b), int(c), int(d), int(e), round(float(f))).timestamp() for a,b,c,d,e,f in raw_data]
内容的提问来源于stack exchange,提问作者ACan
相关产品推荐
相关产品推荐

