簡體   English   中英

Python嵌套列表獲取特定索引的連續值之差

[英]Python nested list get difference of consecutive values of a particular index

我有以下格式的每天嵌套列表及其值:

a_list = [[datetime,value,counter_value],[datetime,value,counter_value]]

那是:

a_list = [['2014-09-27', 2,4],['2014-09-28', 3, 7],['2014-09-29',5,9],['2014-09-30',2,14], ['2014-10-01',2,4]]

請注意,每個嵌套列表的第二個索引值都在逐漸增加,並且基本上像一個重置的計數器值。 我想知道一種僅減去連續列表的第二個索引的Python方法,以便獲得每個間隔的計數差。

就像我想知道2014-09-28的計數差異有多少一樣,我將從2014-09-28減去2014-09-27的計數值,即7-4 = 3,我得到的讀數將是[' 2014年9月28'日,3,3](而不是[ '2014年9月28日',3,7])。 請注意,2014-09-28的其他讀數保持不變。 因此,以這種方式,最終列表將是:

b_list = [['2014-09-28', 3, **3**],['2014-09-29',5,**2**],['2014-09-30',2,**5**], ['2014-10-01',2,**4**]]

如果當前計數器的值小於前一個值,則表示該計數器已被重置,並且保持當前值不減,就像a_list的最后一個值一樣。 pythonic解決方案將不勝感激。

list comprehension使用ifelse

>>> a_list
[['2014-09-27', 2, 4], ['2014-09-28', 3, 7], ['2014-09-29', 5, 9], ['2014-09-30', 2, 14], ['2014-10-01', 2, 4]]
>>> [ a_list[i][:-1] + [a_list[i][2]-a_list[i-1][2]] if a_list[i][2]-a_list[i-1][2] > 0 else a_list[i] for i in range(1,len(a_list)) ]
[['2014-09-28', 3, 3], ['2014-09-29', 5, 2], ['2014-09-30', 2, 5], ['2014-10-01', 2, 4]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM