不使用Numpy的Python数组0值填充方法及自定义函数实现问题
不使用Numpy的全0列表填充与直方图函数实现方案
全0列表生成方法
不用调用numpy的zeroes函数,Python原生就有两种常用的全0列表生成方式:
- 列表乘法(最简便,适合一维列表场景):
[0] * 所需列表长度,比如要生成对应0到maxInt共maxInt+1个位置的全0列表,写法为[0] * (maxInt + 1) - 列表推导式(适用场景更通用,可避免多维列表的浅拷贝问题):
[0 for _ in range(所需列表长度)]
目标函数补全实现
你需要的计数列表初始化为全0列表后,遍历缩放后的数据对应位置累加计数即可,完整实现如下:
def myHistWithRescale(listOfNums, maxInt): """给定任意范围的实数列表,先将数值缩放到0到maxInt(含)之间的整数,再以列表形式返回每个整数的出现次数 """ rescaledData = rescaleToInt(listOfNums, maxInt) # 初始化全0计数列表,每个下标对应一个整数的出现次数 counts = [0] * (maxInt + 1) for val in rescaledData: counts[val] += 1 return counts
补充说明:需保证
rescaleToInt函数返回的所有值都在0~maxInt闭区间内,否则会出现列表下标越界报错。
内容的提问来源于stack exchange,提问作者user16890274
相关产品推荐
相关产品推荐

