我有一个for循环,该循环解析JSON数组并返回一个字符串值列表,该字符串值的小数点后一位。我已经将这些字符串转换为int值,并转换为浮点数:
video.play().then(() =>
setTimeout(() => {
console.log(video.webkitAudioDecodedByteCount); // never reached
video.pause();
}, 100))
setTimeout(() => {
console.log(video.webkitAudioDecodedByteCount); // always 0
console.log("video did not load"); // always reached
}, 10000);
这些是返回的转换后的int值:
result = requests.get(url)
raw = result.json()
print (Fore.YELLOW + "\nMost Recent Sold Listings: \n" + Fore.GREEN)
for item in (raw["findCompletedItemsResponse"][0]["searchResult"][0 ["item"]):
price = item["sellingStatus"][0]["convertedCurrentPrice"][0]['__value__']
int_price = int(float(price))
print (int_price)
538
610
626
650
726
800
829
835
{{ 1}} 843
870
950
我试图调用sum()函数将所有这些int值相加,然后除以len:
960
但是,我收到一条错误消息“ 发生了异常:TypeError “ int”对象不可迭代”
目标是创建返回值的平均值。我在做什么错了?
答案 0 :(得分:1)
根据docs,sum()和len()是内置的,它们期望可迭代。本质上是可迭代的,您可以在其上迭代列表,字符串等。
可迭代对象是具有 iter 方法的对象,该方法返回 迭代器,或定义可以采用的 getitem 方法 从零开始的连续索引(并在以下情况时引发IndexError 索引不再有效)。所以一个可迭代的对象 可以从中获得迭代器。
sum()
总和从左到右开始并迭代一个项目,然后返回 总数。开始默认为0。可迭代项通常是 数字,并且起始值不允许为字符串。
len()
另一方面,返回对象的长度(项目数)。该论点可能 是一个序列(例如字符串,字节,元组,列表或范围)或 集合(例如字典,集合或冻结集合)。
整数不是可迭代的,它由单个值组成。为了解决问题,您可以创建一个新列表 为了便于计算,并且在迭代json值时,将int / float值附加到此列表中。
new_list=[]
在for
循环中
int_price = int(price)
new_list.append(int_price)
现在您应该能够计算平均值
sum(new_list) / float(len(new_list)) # float conversion to get the final result as floats