我有以下问题,我似乎无法找到答案。我的 Python 知识很基础,我现在正在使用 2.7.2 和 2.6.5 版本。
假设我有以下列表:
list1 = [1642842,780497,1506284,1438592,1266530,1154853,965861,610252,1091847,1209404,1128111,749998]
我想知道每 2 个项目(项目 0,1 项目 1,2 项目 2,3 等)的因子差异。
输出应该是这样的(但最好四舍五入到小数点后 1 位):
list2 = [2.1048665145,0.5181605859,1.047054342,1.1358530789,1.0967023509,1.195672048, 1.5827248415,0.5589171377,0.9027975763,1.0720611713,1.5041520111]
我正在寻找的最终结果是,当因子大于 1.5 时,我想报告 2 个列表项编号及其因子值。
项目 0,1 值 2.1
项目 6,7 价值 1.6
项目 10,11 价值 1.5
我该怎么做?
可以通过以下方式轻松找到数字差异:
print numpy.diff(list1)
或者
for i in (abs(x - y) for (x, y) in zip(list1[1:], list1[:-1])):
print i
但是我正在为我上面的问题找到解决方案?我用上面的代码尝试了一些东西,但我似乎无法得到一个好的结果。
另请注意,虽然我将首先过滤 list1 中的数据,但它将包含以下零值,这给了我之前除零问题。
编辑:感谢您的解决方案,他们中的大多数都完全符合我的要求。不幸的是,这些列表中的项目有一个固定的位置。这些信息,我不能丢弃,所以从列表中过滤掉一些项目以防止像“ZeroDivisionError:浮点除以零”这样的错误并不是一个真正的选择。为了解释更多,可能有以下格式的列表:
list1 = [0,0,0,0,0,0,0,0,2,5,65,456,456456,456564,456666,666666,2344,233,232,122,88,6,0,0,0,0]
使用以下任何解决方案来解决此问题的 pythonic 方式是什么?要更具体地了解输出:
项目 0,1 值 0
项目 1,2 值 0
项目 2,3 值 0
等等
项目 8,9 价值 2.5
项目 9,10 价值 13
等等
上次编辑:无论如何我都会过滤数据,而不是创建要修复的问题。感谢大家的回答!