仅在列表中存储项目(如果与第一个或最后一个项目不同)

时间:2018-05-10 16:32:25

标签: python arrays list multidimensional-array

我有一个像这样的多维列表:

[[1525815456,2],[1525815487,3],[1525815517,2],[1525815547,2],[1525815577,2],[1525815608,4],[1525815638,4]]

如何循环浏览并删除列表中的第二个值与上一个或下一个第二个值相同但不是两个值的列表?所以上面的列表将改为:

[[1525815456,2],[1525815487,3],[1525815517,2],[1525815577,2],[1525815608,4],[1525815638,4]]

我已经尝试过这样的事情:

for idx in range(len(data)-1):
    x = data[idx]
    if data[idx][1] != data[idx-1][1] and data[idx][1] == data[idx+1][1]:
        newdata.append(x)
    if data[idx][1] != data[idx+1][1] and data[idx][1] == data[idx-1][1]:
        newdata.append(x)
    if data[idx][1] != data[idx+1][1] and data[idx][1] != data[idx-1][1]:
        newdata.append(x)

但是我一直在犯错,无法让它发挥作用。

编辑:

谢谢大家,这里是代码:

data = [[1, 2],[2, 3],[3, 2],[4, 2],[5, 2],[6, 4],[7, 4]]
newdata = []
for idx in range(len(data)-1):
    x = data[idx]
    if idx != 0 and idx != len(data)-1:
        if data[idx][1] != data[idx-1][1] or data[idx][1] != data[idx+1][1]:
            newdata.append(x)
    else:
        newdata.append(x)
newdata.append(data[-1])
print newdata

将返回:

[[1, 2], [2, 3], [3, 2], [5, 2], [6, 4], [7, 4]]

1 个答案:

答案 0 :(得分:1)

首先,data[idx-1]时您无法访问idx=0。与最后一个元素data[idx+1]相同 所以添加一张支票if idx == 0 or idx == len(data) 如果您遇到其他错误,如果您发布错误消息会很棒。