1. 問題描述
在處理用戶上網數據時,用戶的上網行為數據之間存在時間間隔,按照實際情況,若時間間隔小於閾值(next_access_time_app),則可把這幾條上網行為合並為一條行為數據;若時間間隔大於閾值(next_access_time_app),則可把這幾條上網行為分別認為是獨立無關的行為數據。 具體可結合下圖理解:
因此需求是有二:一是根據閾值(next_access_time_app)決定是否需要對數據進行合並;二是對數據合並時字段值的處理。其中第二點較為簡單,不做表述,重點關注第一點。
深入思考,其實這個問題的關鍵是對數據索引進行切片,並保證切出來的索引能被正確區分。
因此,此問題可以抽象為:如何從一個列表中找出連續的數字組合?
2. 解決辦法
t1 = [] t2 = [] for idx in continuous_action_index: t1.append(idx) if idx + 1 not in continuous_action_index: t1.append(idx + 1) t2.append([t1[0], t1[-1]]) t1 = []
3. 總結
在遇到問題時,能否快速定位到問題的本質,進而采取相應的辦法去解決,本身就是對解決問題能力的一種衡量。
之前刷過一些Leetcode試題,之所以會覺得和實際業務無法有效結合,其實是因為自己遇到的問題太少而產生的幼稚想法。
總之,以后在工作中需要多多進行知識的串聯,這樣才能把能力做到最大化提升。