python 列表求差

2021-10-23 13:56:05 字數 2582 閱讀 6472

列**式:

result1 =[(

"2020-01",21

,12,12

,23,34

),("2020-02",23

,34,45

,56,67

),("2020-05",1

,2,3

,4,4

)]result2 =[(

"2020-01",43

,45,56

,23,34

),("2020-02",23

,12,23

,34,45

),("2020-05",12

,21,31

,41,14

),("2020-06",11

,21,31

,14,14

)]orresult1 =[(

"2020-01",21

,12,12

,23,34

),("2020-02",23

,34,45

,56,67

),("2020-05",1

,2,3

,4,4

)]result2 =[(

"2020-01",43

,45,56

,23,34

),("2020-02",23

,12,23

,34,45

),("2020-05",12

,21,31

,41,14

)]

需要求result2 和result1列表各值之差。

背景:result1的長度小於等於result2,且result1中月份一定會在result2**現,但result2中的月份不一定存在於result1中。

一開始的思路是判斷二者長度是否相同,如果相同,代表二者出現的年月相同,不同則代表result2的值多了一些月份。

所以寫了兩個方法,分別判斷二者長度相同和不同的情況。

def

get_result_with_same_length

(result1, result2)

:"""二者長度相同時"""

result_list =

result_all =

zip(result1, result2)

for result_1, result_2 in result_all:

i =0 list_one =

)while i <

len(result_1)-1

: i +=

1- result_1[i]

) list_one =

tuple

(list_one)

return result_list

defget_result_with_different_length

(result1, result2)

:"""二者長度不相同時"""

result_both =

result_not_senguo_in =

result_all = result2

result_list =

date_list =

for result_1 in result1:0]

)for date in date_list:

for value in result2:

if date in value[0]

: result_all.remove(value)

result_list_same = get_result_with_same_length(result1, result_both)

result_list.extend(result_list_same)

result_list.extend(result_all)

return result_list

if length1 == length2:

result_list = get_result_with_same_length(result1,result2)

if length1 != length2:

result_list = get_result_with_different_length(result1,result2)

但是這樣寫**過於冗長,而且非常不友好,看起來也不簡潔。

後來決定將其轉成字典,通過字典解決。

map_result_1 =

map_result_2 =

for k, v in map_result_1.items():

if k in map_result_2:

for i in

range

(len

(v))

: map_result_2[k]

[i]-= v[i]

result_list =

for k, v in map_result_2.items():

v.insert(

0, k)

這裡主要是學習字典的使用。

CTime之間求差值

ctimespan long ldays,int nhours,int nmins,int nsecs 求差值 ctime t1 ctime getcurrenttime ctime t2 2018,8,10,0,0,0 ctimespan timespan t1 t2 int nseconds t...

python刪除列表元素 Python列表元素分組

比如列表 0,0,0,1,1,2,3,3,3,2,3,3,0,0 分割成 0,0,0 1,1 2 3,3,3 2 3,3 0,0 如何解決這樣的問題呢?1 首先說明,如果這樣的題目都不能寫出 原因在基本的迴圈判斷沒有搞清楚。2 黃哥在如何訓練自己的程式設計思路 文章所說的,做習題,要像開發專案的流程...

python列表學習 python列表學習整理

list1 列表 是一種有序的集合,可以隨時新增和刪除其中的元素。list1 lily lucy peter abel 列印列表 print list1 遍歷列表 end 迴圈中不換行print x,end for x in list1 print x 列表個數 print len list1 列表...