Python for循环逐行输出数值如何合并为列表,解决numpy.float32不可迭代报错
错误原因
你收到报错的核心原因是data[i]['born']返回的是单个numpy.float32类型的数值,list()方法要求传入可迭代对象,无法直接将单个数值转换为列表元素,因此触发不可迭代的报错。
同时你原先的代码还有一个逻辑问题:你把br列表的定义放在了for循环内部,每次循环都会清空重置br,无法累积存储每次取到的数值。
修复方案
把br的初始化放到循环外部,每次循环将取到的born值追加到br中,循环结束后再打印br即可得到你需要的列表格式,修正后代码如下:
z = list(country) del z[99] br = [] for i in z: br.append(data[i]['born']) print(br)
你也可以用更简洁的列表推导式实现相同效果:
z = list(country) del z[99] br = [data[i]['born'] for i in z] print(br)
如果后续需要对该序列做数值计算,还可以直接转换为numpy数组提升运算效率:
import numpy as np br_np = np.array(br)
内容的提问来源于stack exchange,提问作者Zegary
相关产品推荐
相关产品推荐

