【发布时间】:2020-08-26 09:59:45
【问题描述】:
我有一堆长列表(数百万个元素长),其中包含时间值和温度值([time, temperature])。列表如下所示:
mylist = [[1, 72], [2, 75], [3, 74], [4, 75], [5, 74], [6, 75], [7, 79], [8, 71], [9, 79], [10, 71], [11, 75], [12, 74]]
我想要做的是摆脱连续对重复。如果连续重复一对温度,请去掉这些重复的元素(只保留一个)。
这个措辞可能有点令人困惑,所以我将提供一个使用 mylist 的示例:
mylist[0] 和 mylist[1] 是连续的对。与mylist[1] 和mylist[2] 相同,以此类推。
继续前进。现在,查看来自mylist 的温度值。从mylist[0]一直到mylist[11],温度值为:
72 75 74 75 74 75 79 71 79 71 75 74
在上述温度值中,您可以看到 75 74 和 79 71 对以连续方式重复出现。我想要做的只是保留一对,并摆脱重复。所以,我想要的输出是:
output = [[1, 72], [2, 75], [3, 74], [6, 75], [7, 79], [8, 71], [11, 75], [12, 74]]
注意:元素 [11, 75] 和 [12, 74] 被保留,因为虽然它们也包含此 75 74 模式,但它们不会像列表中的前面那样连续重复。
为了解决这个问题,我搜索并尝试了很多东西。我得到的最接近的方法是使用for 循环创建解决方案,我将在其中检查一个元素和前一个元素(index-1),然后检查 index-2 和 index-3,如果它们确定有温度重复,我会删除两个元素。然后,我会重复这个向前看(索引+1)。它有点工作,但事情变得非常混乱而且非常缓慢,它把我的电脑变成了一个便携式加热器。所以,我想知道是否有人知道如何有效快速地摆脱这些连续的重复对。
【问题讨论】:
-
图案长度可以大于2吗?也就是 [72, 75, 74] 可以是模式吗?
-
@GilseungAhn 您好,感谢您的回复!该模式应该只有 2 的长度。这是因为温度经常在两点之间波动,我想摆脱这些波动以使数据文件更小。这有帮助吗?
标签: python-3.x list performance duplicates