给定以下列表:
snplist = [[1786, 0.0126525], [2463, 0.0126525], [2907, 0.0126525], [3068, 0.0126525], [3086, 0.0126525], [3398, 0.0126525], [5468,0.012654], [5531,0.0127005], [5564,0.0127005], [5580,0.0127005]]
我希望对列表中每个子列表的第二个元素进行成对比较,即比较
[1786, 0.0126525]
中的0.0126525
是否等于[2463, 0.0126525]
中的0.0126525
。如果是,则按照代码所示打印输出。
使用for循环可实现该结果:
for index, item in enumerate(snplist, 0):
if index < len(snplist)-1:
if snplist[index][1] == snplist[index+1][1]:
print snplist[index][0], snplist[index+1][0], snplist[index][1]
在使用列表索引进行循环元素的成对比较时,我总是因为最后一个元素而遇到“索引超出范围”的错误。我通过添加条件来解决这个问题。
if index < len(snplist)-1:
我认为这不是最佳方法。我想知道在Python中进行列表元素的成对比较是否有更详细的方法?
编辑:我没有考虑到比较浮点数时的容差水平。如果两个浮点数相差0.001
,我会认为它们相等。